Oracle HTML DB 2日で開発者
リリース1.6
部品番号: B16330-01
  目次へ移動
目次

戻る
戻る
次へ
次へ
 

8 アプリケーション内のファイルのアップロードおよびダウンロード方法

Oracle HTML DBアプリケーションには、データベースに格納されているファイルをアップロードおよびダウンロードする機能を含めることができます。 このチュートリアルでは、ファイルのアップロードおよびダウンロード用のリンクを持つフォームおよびレポートの作成方法、ドキュメントに関する追加属性を格納する表の作成および移入方法、カスタム表にドキュメントをダウンロードするメカニズムの作成方法について説明します。

この章の内容は次のとおりです。

アプリケーションの作成

最初に、ページ2にアップロード・フォームを含めると想定して、「アプリケーションを作成」ウィザードを使用して新しいアプリケーションを作成します。

「アプリケーションを作成」ウィザードでアプリケーションを作成するには、次の手順を実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. アプリケーションを作成」をクリックします。

  3. 「作成方法を選択」で、「最初から」を選択して「次へ」をクリックします。

  4. 「名前」に、Download Appと入力して「次へ」をクリックします。

  5. 「タブ」で、「タブなし」を選択して「次へ」をクリックします。

  6. 「ページ名」で、デフォルトを受け入れて「次へ」をクリックします。

  7. 「テーマ」で、「テーマ2」を選択して「次へ」をクリックします。

  8. アプリケーションを作成」をクリックします。

アップロード・フォームの作成

アプリケーションを作成した後、次の手順では、ドキュメントをアップロードするフォームを作成します。 次の演習では、HTMLリージョンに、ファイルのアップロード・アイテムとボタンが含まれるフォームを作成します。 ボタンによって、ページが送信され、ユーザーが同じページに戻されます。

このセクションの内容は次のとおりです。

HTMLリージョンの作成

HTMLリージョンを作成するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「リージョン」で、「作成」アイコンをクリックします。

  3. 「リージョン・タイプを指定」で、「HTML」を選択して「次へ」をクリックします。

  4. 「リージョン・タイプ」で、「HTML」を選択して「次へ」をクリックします。

  5. 「リージョン・タイトル」で、「ファイルを送信」と入力して「次へ」をクリックします。

  6. 残りのデフォルトを受け入れて「リージョンを作成」をクリックします。

アップロード・アイテムの作成

ファイルのアップロード・アイテムを作成するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「アイテム」で、「作成」アイコンをクリックします。

  3. 「アイテム・タイプを選択」で、「ファイル参照」を選択して「次へ」をクリックします。

  4. 「アイテム名」に、P2_FILE_NAMEと入力して「次へ」をクリックします。

  5. 残りのデフォルトを受け入れて「アイテムを作成」をクリックします。

ボタンの作成

ボタンを作成するには、次の手順を実行します。

  1. 「ボタン」で、「作成」アイコンをクリックします。

  2. 「リージョン」で、「ファイルの送信1.10」を選択して「次へ」をクリックします。

  3. 「タスク」で、「リージョン位置にボタンを作成」を選択して「次へ」をクリックします。

  4. 「ボタン名およびラベルを指定」で、次の手順を実行します。

    1. 「ボタン名」に、Submitと入力します。

    2. 残りのデフォルトを受け入れます。

    3. 次へ」をクリックします。

  5. 「ボタン・テンプレート」で、デフォルトを受け入れて「次へ」をクリックします。

  6. 「表示プロパティ」で、デフォルトを受け入れて「次へ」をクリックします。

  7. 「ブランチ」で、次の手順を実行します。

    1. 「ページにブランチ」で、ページ2を選択します。

    2. ボタンを作成」をクリックします。

  8. ページを実行」アイコンをクリックして、ページを実行します。

  9. ユーザー名とパスワードを要求されたら、次の手順を実行します。

    1. 「ユーザー名」で、作業領域の名前を入力します。

    2. 「パスワード」で、作業領域のパスワードを入力します。

    3. ログイン」をクリックします。

ページを実行すると、図8-1のように表示されます。

図8-1 ファイルの送信フォーム




ダウンロード・リンクを持つレポートの作成

ドキュメントをアップロードするフォームを作成した後、次の手順では、ドキュメントをダウンロードするリンクを含むドキュメント表のレポートを作成します。 ファイル・アップロードのアイテム・タイプを使用すると、アップロードするファイルはwwv_flow_file_objects$と呼ばれる表に格納されます。 すべての作業領域は、HTMLDB_APPLICATION_FILESと呼ばれるビューを介した、この表へのアクセス権を所有しています。

このセクションの内容は次のとおりです。

HTMLDB_APPLICATION_FILESのレポートの作成

HTMLDB_APPLICATION_FILESのレポートを作成するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「リージョン」で、「作成」アイコンをクリックします。

  3. 「リージョン・タイプを指定」で、「レポート」を選択して「次へ」をクリックします。

  4. 「レポート実装」で、「SQLレポート」を選択して「次へ」をクリックします。

  5. 「リージョン・タイトル」で、「アップロードされたファイル」と入力して「次へ」をクリックします。

  6. 「ページ・リージョン・ソース」で、次のSQL問合せを入力します。

    SELECT id,name FROM HTMLDB_APPLICATION_FILES
    
    
  7. リージョンを作成」をクリックします。

  8. ページを実行します。

図8-2に示すように、アップロード済のすべてのドキュメントが作成したレポートに表示されます。 次に、ドキュメントをダウンロードするリンクを設定します。

図8-2 アップロード済ファイルのレポート




ドキュメントをダウンロードするリンクの追加

ドキュメントをダウンロードするリンクをレポートに設定するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「リージョン」で、アップロード済ファイルの横にある「Q」をクリックします。

  3. 「レポート列属性」で、ID列の横にある「編集」アイコンをクリックします。

  4. 「列リンク」までスクロールします。 「列リンク」で、次の手順を実行します。

    1. 「リンク・テキスト」フィールドに、次のように入力します。

      ダウンロード
      
      
    2. 「ターゲット」で、「URL」を選択します。

    3. 「URL」フィールドに、次のように入力します。

      p?n=#ID#
      
      
  5. 変更を適用」をクリックします。

ページを実行すると、図8-3のように表示されます。

図8-3 ダウンロード・リンク付きのアップロード済ファイルのレポート




ドキュメントに関する追加属性の格納

次に、アップロードするドキュメントに関する追加情報を格納する別の表を作成します。 この例では、次の手順を実行します。

このセクションの内容は次のとおりです。

ドキュメント属性を格納する表の作成

アップロード済ファイルに関する追加情報を格納する表を作成するには、次の手順を実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. SQL Workshop」をクリックします。

  3. SQLコマンド・プロセッサ」をクリックします。

  4. 「SQL文」フィールドに、次のように入力します。

    CREATE TABLE file_subjects(name  VARCHAR2(4000), subject VARCHAR2(4000) );
    
    
  5. SQLを実行」をクリックします。

ドキュメントの件名を取得するアイテムの作成

ドキュメントの件名を取得するアイテムを作成するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「アイテム」で、「作成」アイコンをクリックします。

  3. 「アイテム・タイプを選択」で、「テキスト」を選択して「次へ」をクリックします。

  4. 「テキスト制御を選択」で、「テキスト・フィールド」を選択して「次へ」をクリックします。

  5. 「アイテム名および表示位置を指定」で、次の手順を実行します。

    1. 「アイテム名」に、P2_SUBJECTと入力します。

    2. 「リージョン」リストから、「アップロードされたファイル」を選択します。

    3. 残りのデフォルトを受け入れて「次へ」をクリックします。

  6. 「アイテム属性を指定」で、次の手順を実行します。

    1. 「ラベル」フィールドに、Subjectと入力します。

    2. 残りのデフォルトを受け入れます。

    3. 次へ」をクリックします。

  7. アイテムを作成」をクリックします。

情報を挿入するプロセスの作成

件名情報を新しい表に挿入するプロセスを作成するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「ページ・プロセス」の「プロセス」で、「作成」アイコンをクリックします。

  3. 「プロセス・タイプを選択」で、「PL/SQL」をクリックします。

  4. 「プロセス属性を指定」で、次の手順を実行します。

    1. 「名前」に、Insertと入力します。

    2. 「ポイント」で、「送信時 - 計算および検証の後」を選択します。

    3. 「タイプ」で、「PL/SQL無名ブロック」を選択します。

    4. 次へ」をクリックします。

  5. 「ページ・プロセスを指定」で、次のPL/SQLプロセスを入力します。

    INSERT INTO file_subjects(name, subject) VALUES(:P2_FILE_NAME,:P2_SUBJECT);
    
    
  6. 「メッセージを指定」で、次の手順を実行します。

    1. 「成功メッセージ」フィールドに、次のように入力します。

      Subject inserted
      
      
    2. 「失敗メッセージ」フィールドに、次のように入力します。

      Error inserting subject
      
      
    3. 次へ」をクリックします。

  7. 「対象ボタン」で、「送信」を選択します。

  8. プロセスを作成」をクリックします。

レポート・リージョン内の追加属性の表示

SQLレポート・リージョンを変更して、追加属性表に結合するには、次の手順を実行します。

  1. 「リージョン」で、「アップロードされたファイル」を選択します。

  2. リージョン・ソースを次と置き換えます。

    SELECT w.id,w.name,s.subject
    FROM HTMLDB_APPLICATION_FILES w,file_subjects s
    WHERE w.name = s.name
    
    
  3. 変更を適用」をクリックします。

    ページを実行します。 図8-4に示すように、アップロード済ファイルのレポートには、件名列が表示されるようになります。

    図8-4 件名列を持つアップロード済ファイルのレポート




カスタム表へのドキュメントの格納

アップロード済ドキュメントを自分のスキーマが所有する表に格納する場合があります。 たとえば、アップロード済ドキュメントにOracle Text索引を作成する場合、ドキュメントはカスタム表に格納する必要があります。

カスタム表にドキュメントを格納するには、次の手順を実行します。

BLOB列をfile_subjects表に追加するには、次の手順を実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. SQL Workshop」をクリックします。

  3. SQLコマンド・プロセッサ」をクリックします。

  4. 次のSQL文を入力します。

    ALTER TABLE file_subjects ADD(id number,blob_content BLOB,mime_type varchar2(4000) );
    
    
  5. SQLを実行」をクリックします。

プロセスを変更して、file_subjects表にドキュメントを挿入するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「ページ・プロセス」で、「挿入」を選択します。

  3. 「ソース」で、プロセスを次と置き換えます。

      IF ( :P2_FILE_NAME is not null ) THEN
         INSERT INTO file_subjects(id,NAME, SUBJECT, BLOB_CONTENT, MIME_TYPE)
            SELECT ID,:P2_FILE_NAME,:P2_SUBJECT,blob_content,mime_type
                FROM HTMLDB_APPLICATION_FILES WHERE name = :P2_FILE_NAME;
       DELETE from HTMLDB_APPLICATION_FILES WHERE name = :P2_FILE_NAME;
      END IF;
    
    
  4. 変更を適用」をクリックします。

カスタム表からのドキュメントのダウンロード

ドキュメントがカスタム表に格納されるようになると、ドキュメントをダウンロードする方法を指定する必要があります。 これを行うには、プロシージャを作成して、そのプロシージャに対する実行権限を擬似ユーザーHTMLDB_PUBLIC_USERに付与します。

これを実行するには、次の内容を変更する必要があります。

プロシージャを作成して、file_subjects表からドキュメントをダウンロードし、実行権限をpublicに付与するには、次の手順を実行します。

  1. 「SQL Workshop」にナビゲートします。

  2. SQLコマンド・プロセッサ」をクリックします。

  3. 「SQL文」フィールドに、次のように入力します。

      CREATE OR REPLACE PROCEDURE download_my_file(p_file in number) AS
            v_mime  VARCHAR2(48);
            v_length  NUMBER;
            v_file_name VARCHAR2(2000);
            Lob_loc  BLOB;
    BEGIN
            SELECT MIME_TYPE, BLOB_CONTENT, name,DBMS_LOB.GETLENGTH(blob_content)
                    INTO v_mime,lob_loc,v_file_name,v_length
                    FROM file_subjects
                    WHERE id = p_file;
                  --
                  -- set up HTTP header
                  --
                        -- use an NVL around the mime type and
                        -- if it is a null set it to application/octect
                        -- application/octect may launch a download window from windows
                        owa_util.mime_header( nvl(v_mime,'application/octet'), FALSE );
    
                    -- set the size so the browser knows how much to download
                    htp.p('Content-length: ' || v_length);
                    -- the filename will be used by the browser if the users does a save as
                    htp.p('Content-Disposition:  attachment; filename="'||substr(v_file_name,instr(v_file_name,'/')+1)|| '"');
                    -- close the headers
                    owa_util.http_header_close;
                    -- download the BLOB
                    wpg_docload.download_file( Lob_loc );
    end download_my_file;
    /
    
    
  4. SQLを実行」をクリックします。

  5. 「SQL文」フィールドに、次のように入力します。

    GRANT EXECUTE ON download_my_file TO PUBLIC/
    
    
  6. SQLを実行」をクリックします。

SQLレポート・リージョンを変更して、HTMLDB_APPLICATION_FILESビューと結合しないようにするには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「リージョン」で、「アップロードされたファイル」を選択します。

  3. リージョン・ソースを次と置き換えます。

    SELECT s.id,s.name,s.subject FROM file_subjects s
    
    
  4. 変更を適用」をクリックします。

ダウンロード・リンクを変更して、新しいダウンロード・プロシージャを使用するには、次の手順を実行します。

  1. ページ2のページ定義にナビゲートします。

  2. 「リージョン」で、アップロード済ファイルの横にある「Q」をクリックします。

  3. ID例の横にある「編集」アイコンをクリックします。

  4. 「列リンク」リージョンまでスクロールします。

  5. 既存のURLを次と置き換えます。

    #OWNER#.download_my_file?p_file=#ID#
    
    
  6. 変更を適用」をクリックします。