直リンクの実装の詳細、特にページの保護に関する説明については記事「特定のページへの直リンクによるアクセス」を参照してください。ページ・プロパティのディープ・リンクやページ保護の設定の意味について説明をしています。
本記事では、主に実装の手順について紹介します。
以下のような機能を、本記事では実装します。ダウンロードURLを電子メールなどに含めることにより、ファイルを共有することができます。
アプリケーション・アイテムの作成
共有コンポーネントのアプリケーション・アイテムを開きます。
作成済みのアプリケーション・アイテムが一覧されます。
作成を実行します。
作成するアプリケーション・アイテムは名前をIDとし、セッション・ステート保護は制限なしに設定します。設定した後、アプリケーション・アイテムの作成を実行します。
直リンクとなるURLを、セッションの開始時にアプリケーション・アイテムとして設定します。アプリケーションがインストールされているワークスペース名やアプリケーション別名によってURLは変わります。
アプリケーション・アイテムの名前はG_DOWNLOAD_URLとします。セキュリティのセッション・ステート保護は制限付き - ブラウザから設定不可を選択し(これがデフォルトです)、アプリケーションのユーザーによる値の設定を禁止します。
アプリケーション・アイテムIDおよびG_DOWNLOAD_URLが作成されます。
アプリケーション・アイテムG_DOWNLOAD_URLに値を設定します。
共有コンポーネントのアプリケーションの計算を開きます。
作成済みのアプリケーションの計算が一覧されます。作成をクリックします。
計算アイテムとしてG_DOWNLOAD_URLを選択します。頻度の計算ポイントは新規インスタンス(新規セッション)開始時です。
計算の計算タイプにファンクション本体を選択し、計算として以下のPL/SQLコードを記述します。
計算の作成をクリックします。
アプリケーションの計算が作成されました。
セッションの開始時にアプリケーション・アイテムG_DOWNLOAD_URLに直接ダウンロードするためのURLが設定されます。
ダウンロード機能の実装
プログラムの中からファイルのダウンロードを呼び出すために、APEX_UTIL.GET_BLOB_FILE_SRCを使用します。このAPIの引数p_item_nameとして、ダウンロードするファイルが保存されているBLOB列が割り当てられているページ・アイテムを指定します。このようなページ・アイテムは通常、フォームに含まれています。
今回のアプリケーションでは表SFM_CONTENTSのフォームが、ページ番号3のSfm Contentとして作成されています。フォームに含まれるページ・アイテムP3_CONTENTをp_item_nameに与えることができます。
ページ・アイテムP3_CONTENTを使って、ダウンロード機能を実装します。アプリケーションにp_item_nameとして割り当て可能なページ・アイテムが含まれない場合は、フォームを実装したページを新たに作成する必要があります。
ダウンロード機能を実装するページを作成します。
ページの作成を実行します。
空白ページを選択します。
ページ定義の名前はdownloadとします。ダウンロードURLのターゲットはこのページ名になります。ページ・モードは標準、ナビゲーションのブレッドクラムの使用、ナビゲーションの使用はともにOFFです。この空白のページがユーザーに表示されることはありません。
ページの作成を実行します。
ページが作成されます。
ページ・プロパティのセキュリティに含まれるディープ・リンクを有効にします。また、ページ・アクセス保護は制限なしにします。
レンダリング前のヘッダー前にプロセスを作成します。
識別の名前はダウンロード、タイプはコードの実行を選択します。PL/SQLコードとして以下を記述します。
サーバー側の条件のタイプにアイテムはNULLではないを選択し、アイテムにIDを指定します。URLの引数としてIDがなければプロセスは実行しません。
以上で実装は完了です。
直接ファイルをダウンロードするURLを確認します。
対話モード・レポートのソースに以下の列DOWNLOAD_URLを追加します。
:G_DOWNLOAD_URL || id download_url
ページ番号2の対話モード・レポートのソースのSQL問合せを以下のSELECT文に置き換えます。
アプリケーションを実行し、対話モード・レポートに表示する列にDownload Urlを追加します。
表示されたURLを直接アクセスすると、ユーザー認証が要求されます。これはページdownloadが認証が必要なページとして設定されているためです。正しいユーザー名とパスワードでサインインを行うとファイルのダウンロードが開始します。ページのディープ・リンクが有効でなければ、サインインの後は必ずホーム・ページが開くように制限されるため、ページdownloadが開くことはありません。また、ページ・アクセス保護が制限なしであるため、引数idの指定が許されています。
続く