2020年2月28日金曜日

APEXからOCIオブジェクト・ストレージを操作する(8) - ファイルのダウンロード

OCIオブジェクト・ストレージにあるオブジェクトをダウンロードするリンクを、ホーム画面のレポートに追加します。
 

オブジェクトをダウンロードするリンクの追加


オブジェクトのダウンロード要求を処理するページを新規に作成します。このページは画面の表示には使われません。アプリケーションの開発画面よりページの作成を実行し、空白ページを選びます。

ページ番号として名前Download Objectページ・モード標準を選択します。ナビゲーションブレッドクラムナビゲーションともにOFFにし、ページの作成を実行します。
 

コンポーネントBodyに、プロセスへ渡す引数の役割をするページ・アイテムP3_BUCKET_NAMEP3_OBJECT_NAMEを作成します。識別タイプは双方とも非表示にします。
 

左ペインのレンダリング・ビューより、レンダリング前に含まれるヘッダーの前の上でコンテキスト・メニューを表示させ、プロセスの作成を実行します。
 

作成したプロセスの識別名前downloadObjectとし、識別タイプコードを実行を指定します。ソース位置ローカル・データベースPL/SQLコードとして以下を記述します。元のブログのコードは日本語の扱いに不備があったので、その部分を修正しています。



このコードの最後にapex_application.stop_apex_engine;の記載があります。downloadObjectプロセスはAPEXの標準的なページ処理を中断させているため、この後の処理は(どのような処理をページに追加していても)実行されません。

次にページ1のホーム画面をページ・デザイナで開き、オブジェクトの一覧にダウンロード・リンクを追加します。リージョンBucket Contentsの上でコンテキスト・メニューを開き、仮想列の作成を実行します。
 

作成された仮想列DERIVED$01を選択し、リンクが定義されていませんをクリックし、リンク/ターゲットを設定します。
 

リンクのターゲットは先ほど作成したDownload Objectのページなので、ターゲットのタイプこのアプリケーションのページページです。アイテムの設定として、P3_BUCKET_NAMEにはページ・アイテム&P1_BUCKET_NAME.を値として渡し、P3_OBJECT_NAMEにはレポートの出力である#NAME#を値として与えます。OKをクリックして、ターゲットを設定します。
 

最後にリンクリンク・テキストDownloadに変更し、保存をします。
 

これでダウンロード機能の実装ができました。アプリケーションを実行して、ホーム画面のレポートからオブジェクトのダウンロードを実行してみましょう。

続く