ヘッダーをスキップ
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース4.2 for Oracle Database 12c
B71338-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

17.10 フォームおよびレポートでのBLOBサポートについて

Oracle Application Expressでは、宣言的なBLOBサポートが提供されているため、開発者はフォームでのファイルの宣言的なアップロードや、レポートでのファイルのダウンロードおよび表示を行うことができます。BLOBの表示とダウンロードは、PL/SQLを使用して手続き的に作成することもできます。このセクションでは、ファイルのアップロード、ダウンロードおよび表示を行う方法と、BLOB列に格納されているファイルを正しく管理するために重要となる追加のファイル属性(MIMEタイプやファイル名など)の管理方法について説明します。この機能を使用すると、簡単にOracle Application Expressアプリケーションを拡張して、イメージ、ドキュメント、ビデオなどのファイルを管理できます。

内容は次のとおりです。

17.10.1 フォームでのBLOBについて

フォームを作成する場合(アプリケーションの作成ウィザードを使用して、フォーム型(またはレポートおよびフォーム型)のページを作成するか、フォーム型のリージョンを作成する)、または既存のフォームにアイテムを追加する場合、BLOB型のデータベース列がソースであるアイテムは、ファイル参照型のアイテムになります。フォームがINSERTにコールされる場合、ユーザーが選択したファイルは、BLOB列にロードされます。フォームが更新にコールされる場合、ダウンロード・リンクが「参照」ボタンの右に表示されます。ユーザーは、このリンクを使用してファイルをダウンロードできます。

17.10.1.1 BLOBへのファイルのアップロードとダウンロード

デフォルトのBLOBサポートでは、一般的なアプリケーションでBLOBを効果的に管理するために必要とされるすべての情報が提供されているわけではありません。列がBLOBであるという情報に加えて、ファイルの詳細情報も提供されると、エンド・ユーザーの使いやすさが向上します。ファイル参照ページ・アイテムには、この追加情報を完全に宣言的に管理することを容易にするための追加設定があります。


関連項目:

付録A、「アイテム・タイプについて」の「ファイル参照」、「ファイル参照」設定のアイテム・レベル・ヘルプ

ファイル参照アイテム・タイプ内では、次の2つの異なるタイプの記憶域タイプが使用できます。

  • アイテム・ソース属性で指定されたBLOB列: ここで説明する追加設定の構成をサポートする、完全に宣言的なアプローチです。これは、所有するデータベース表のBLOBを参照します。

  • WWV_FLOW_FILES表: 下位互換性のために用意されています。新しいアプリケーションでは使用できません。

この追加情報を提供するには、MIMEタイプ、ファイル名、最終更新日およびキャラクタ・セット設定を格納および追跡するための追加の列を元表に追加することをお薦めします。これは表を拡張することで実行できます。次に例を示します。

ALTER TABLE emp ADD 
   (ATTACH_MIMETYPE     VARCHAR2(255),
    ATTACH_FILENAME     VARCHAR2(255),
    ATTACH_LAST_UPDATE  DATE,
    ATTACH_CHARSET      VARCHAR2(128));

注意:

BLOBのキャラクタ・セットはアップロード時に自動的に設定されません。BLOBのキャラクタ・セット値を格納する場合、キャラクタ・セットを格納するために使用する列にバインドされる追加のページ・アイテムをページに提供する必要があり、ユーザーはその場合、アップロードするドキュメント用のキャラクタ・セットを指定できるようになります。

カスタム表でフォームを手動作成する場合も、この機能を利用できます。このことを行うには、DMLプロセス・タイプがDML_PROCESS_ROWのページにおいて、「記憶域タイプ」設定が「アイテム・ソース属性で指定されたBLOB列」である「ファイル参照」アイテム・タイプを使用します。このプロセスによって、表名と主キー列が決定されます。

17.10.1.2 BLOBの表示

作業中のBLOBがイメージである場合は、そのイメージをフォームでも表示できます。これを宣言的に処理するために、イメージの表示アイテム・タイプを使用できます。付録A、「アイテム・タイプについて」を参照してください。手続き的に処理するには、「手続き的なBLOBの使用」を参照してください。

17.10.1.3 イメージ参照の削除

ファイル参照の使用時はNULLへの設定が存在しないため、イメージ参照を削除するメカニズムを提供する必要がある場合は、イメージを削除する特別なボタン(必要な列を無効化する機能を持つボタン)を含める必要があります。次に例を示します。

UPDATE demo_product_info
   SET product_image = NULL,
       MIMETYPE = NULL,
       FILENAME = NULL,
       IMAGE_LAST_UPDATE = NULL,
       CHARSET = NULL
 WHERE product_id = :P6_PRODUCT_ID;

17.10.2 レポートでのBLOBサポートについて

Oracle Application Expressでは、従来のレポートと対話モード・レポートの両方に対するBLOBサポートが提供されています。ウィザードを使用してレポートを作成し、BLOBタイプの列を含める場合は、基本的なサポートが含まれます。ダウンロード機能を使いやすくするために、生成後に詳細情報を追加する必要があります。

17.10.2.1 ダウンロード・リンクの提供

レポートにダウンロード・リンクを容易に含めることができるように、レポートにはBLOBの長さ(dbms_lob.getlength(RESUME)など)を選択します。長さが0の場合、BLOBNULLとなり、ダウンロード・リンクは表示されません。同様に、ダウンロード・リンクの書式を設定できる、日付または数に対する書式マスクを指定します。DOWNLOAD書式は、次の例のように3つ以上のパラメータを指定する必要があるという点で他の書式マスクより複雑です。

DOWNLOAD:EMP:RESUME:EMPNO

次の表は、DOWNLOAD書式のパラメータについて説明します。

位置 属性 必須 説明
1 DOWNLOAD はい DOWNLOADレポート書式マスクを指定します。
2 表名 はい BLOBタイプのターゲット列を含む表の名前(大/小文字が区別されます)。
3 BLOBを含む列 はい BLOBタイプの列の名前(大/小文字が区別されます)。
4 主キー列1 はい 主キー列1の名前。大文字と小文字が区別されます。
5 主キー列2 いいえ 主キー列2の名前。大文字と小文字が区別されます。
6 MIMEタイプ列 いいえ MIMEタイプを格納するために使用する列名(大/小文字が区別されます)。
7 ファイル名列 いいえ BLOBのファイル名を格納するために使用する列名(大/小文字が区別されます)。ユーザーがファイルをダウンロードするときにNULLの場合は、この列名がデフォルトで使用されます。
8 最終更新列 いいえ BLOBの最終更新日付を格納するために使用する列名(大/小文字が区別されます)。これを指定すると、ファイルをダウンロードする際のHTTPヘッダーに最終変更日が示され、BLOBをWebブラウザにキャッシュできるようになります。指定しない場合は、ファイルをブラウザにキャッシュできない場合があります。
9 キャラクタ・セット列 いいえ BLOBのキャラクタ・セットを格納するために使用する列名(大/小文字が区別されます)。キャラクタ・セットのエンコーディングを維持する必要がある場合など、アジア言語で最も使用されます。
10 コンテンツ配置 いいえ inlineまたはattachmentを指定します。その他のすべての値は無視されます。MIMEタイプが提供され、ファイルが表示可能なタイプである場合は、ファイルが表示されます。MIMEタイプが提供されていない場合、またはファイルをインラインで表示できない場合、ユーザーはダウンロードを行うように求められます。
11 ダウンロード・テキスト いいえ ダウンロード・リンクに使用する文字列。何も指定されていない場合は、Downloadが使用されます。これは置換をサポートしています(翻訳されたアプリケーションに有効です)。

次に例を示します。

DOWNLOAD:EMP:RESUME:EMPNO::RESUME_MIMETYPE:RESUME_FILENAME:RESUME_LAST_UPDATE::attachment:Resume

上述の説明に従い、これらのパラメータを入力し、形式を作成します。「数値/日付書式」アイテムには、「BLOBフォーマット」を選択する必要があります。選択すると、BLOB列属性リージョンが表示され、前述のすべてのパラメータを入力できます。

17.10.2.2 BLOBの表示

作業中のBLOBがイメージである場合は、新しいIMAGEレポート書式マスクを使用してレポートに表示できます。MIMEタイプに関係なく、レポートでは常にBLOBの表示が試行されます。BLOBのレンダリングを行うことができない場合は、壊れたイメージが表示されます。

次の表は、IMAGE書式マスクのパラメータについて説明します。

位置 属性 必須 説明
1 IMAGE はい IMAGEレポート書式マスクを指定します。
2 表名 はい BLOBタイプのターゲット列を含む表の名前(大/小文字が区別されます)。
3 BLOBを含む列 はい BLOBタイプの列の名前(大/小文字が区別されます)。
4 主キー列1 はい 主キー列1の名前。大文字と小文字が区別されます。
5 主キー列2 いいえ 主キー列2の名前。大文字と小文字が区別されます。
6 MIMEタイプ列 いいえ MIMEタイプを格納するために使用する列名(大/小文字が区別されます)。
7 ファイル名列 いいえ IMAGE書式には使用しませんが、IMAGEとDOWNLOAD間で書式を簡単に変更する場合に必要です。
8 最終更新列 いいえ BLOBの最終更新日付を格納するために使用する列名(大/小文字が区別されます)。これを指定すると、ファイルをダウンロードする際のHTTPヘッダーに最終変更日が示され、BLOBをWebブラウザにキャッシュできるようになります。指定しない場合は、ファイルをブラウザにキャッシュできない場合があります。
9 キャラクタ・セット列 いいえ IMAGE書式には使用しませんが、IMAGEとDOWNLOAD間で書式を簡単に変更する場合に必要です。
10 コンテンツ配置 いいえ IMAGE書式には使用しませんが、IMAGEとDOWNLOAD間で書式を簡単に変更する場合に必要です。
11 代替テキスト いいえ イメージに関連付けられている代替タグに使用する文字列です。

次に例を示します。

IMAGE:EMP:RESUME:EMPNO::RESUME_MIMETYPE:RESUME_FILENAME:RESUME_LAST_UPDATE::attachment:Resume

上述の説明に従い、これらのパラメータを入力し、形式を作成します。「数値/日付書式」アイテムには、「BLOBフォーマット」を選択する必要があります。選択すると、新しいリージョンのBLOB列属性が表示され、上述の説明に従って、すべてのパラメータを記入できます。

17.10.3 手続き的なBLOBの使用

ダウンロード・リンクを指定した組込み方式を使用するかわりに、APEX_UTIL.GET_BLOB_FILE_SRCファンクションを使用できます。この方法を使用すると、イメージの表示形式をより具体的に設定できます(高さタグおよび幅タグを使用)。この方法は、有効なOracle Application Expressセッションからコールされた場合にのみ有効です。また、BLOBを記述するパラメータを、アプリケーション内の有効なアイテムの書式としてリストする必要もあります。これにより、ファンクションからそのアイテムが参照されます。


関連項目:

Oracle Application Express APIリファレンスの「GET_BLOB_FILE_SRCファンクション」