0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracle APEXでフォーム付き対話モードレポートに文書ファイルをアップロード

Posted at

APEXのフォーム付き対話モードレポートを通して、文書データ(ExcelやWordなど)を一覧表示、アップロード、ダウンロードできるやり方を記載します。文書データに関してはDBにBLOB型で持たせます。

画面

image.png

手順サマリ

  1. テーブル作成
  2. フォーム付き対話モードレポートの作成
  3. フォームのBLOB列のページアイテムプロパティにBLOB補足情報列を入力

手順詳細

テーブル作成

DOC列がドキュメントファイルを格納するBLOB列で、その他のDOC_FILENAME、DOC_MIMETYPE、DOC_CHARSET、DOC_LASTUPDが追加の補足列になります。
これらの補足列があることでドキュメントファイルが扱いやすくなります。
以下はSQLワークショップからID列を新規順序作成で指定して作成したときに生成されるSQLです。シーケンスと自動採番のトリガーまで生成してくれます。

CREATE table "DOCUMENTS" (
    "ID"           NUMBER,
    "NAME"         VARCHAR2(256),
    "DOC"          BLOB,
    "DOC_FILENAME" VARCHAR2(512),
    "DOC_MIMETYPE" VARCHAR2(512),
    "DOC_CHARSET"  VARCHAR2(512),
    "DOC_LASTUPD"  DATE,
    constraint  "DOCUMENTS_PK" primary key ("ID")
)
/

CREATE sequence "DOCUMENTS_SEQ" 
/

CREATE trigger "BI_DOCUMENTS"  
  before insert on "DOCUMENTS"              
  for each row 
begin  
  if :NEW."ID" is null then
    select "DOCUMENTS_SEQ".nextval into :NEW."ID" from sys.dual;
  end if;
end;
/   

対話モードレポートの作成

先ほど作成したテーブル(DOCUMENTS)をもとにフォーム付き対話モードレポートを持つアプリケーションを作成します。
方法はいろいろありますが、SQLワークショップからDOCUMENTSを指定してアプリケーション作成ボタンを押下して始める方法が早いです。

image.png

特に何もいじらずアプリケーション作成ボタンを押せば、以下のようなフォーム付きの対話モードレポートができあがります。まだデータがないので何もない表示されてません。

image.png

文書を登録するために、以下の順で、作成ボタンからフォームを呼び出し、文書名(リスト上の文書の名前)を入力し、文書ファイルをダイアログまたはドラッグアンドドロップで選択後、作成ボタンを押します

image.png

すると以下のような行が追加されます。
image.png

ここで鉛筆マークをクリックすると、該当行を編集するフォームに飛ぶのですが、ここにダウンロードリンクがあり、ファイルのダウンロードができます。しかし、ダウンロードファイルはdownloadという名前で拡張子も何もないファイルがダウンロードされてしまい、このままでは使いにくい感じです。(一応、ダウンロード後に元ファイル名にリネームしてに戻せば使えます)

image.png

フォームのBLOB列のページアイテムプロパティにBLOB補足情報列を入力

そこで先ほどのDOC_FILENAME、DOC_MIMETYPE、DOC_CHARSET、DOC_LASTUPDが追加の補足列をフォームに設定してファイルのアップロードと同時に名前情報などがテーブルに保存されるようにします。
方法としては、フォームの編集画面から、BLOB列のページアイテム(今回はP4_DOC)を選択して、プロパティにそれぞれ以下のように設定します。

image.png

この設定のあと、もう一度フォームからtest.xlsxを名前test2としてアップロードしてダウンロード用のファイルダイアログを見ると、以下のようにちゃんと、元のファイル名でダウンロードされます。

image.png

この時のDOCUMETSテーブルの状態をオブジェクトブラウザで見ると以下のような形になっています。
image.png

参考

日日是Oracle APEX:簡単な文書管理アプリケーションを作成する
こちらのサイトでは、文書ファイルのレポート内でのダウンロードリンクのつくり方、直リンクによるダウンロードや全文検索の追加の手順などまで記載されています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?