2017-06-25 5 views
0

ファイルをアップロードするOracle Apexアプリケーションがあります。ファイルはP14_FILE_BROWSE項目によってロードされ、記憶域タイプはapex_application_temp_filesに設定されます。アップロードボタンは、次のPL/SQLコードが実行されると、プロセスが押された後:Oracle Apex:セッションの期限切れ後にBLOB列に格納されたファイルにアクセスできない

declare 
begin 
insert into files(

       ID, NAME, FILENAME, MIME_TYPE, CONTENT) 

     select ID, NAME, FILENAME, MIME_TYPE, BLOB_CONTENT 

     from apex_application_temp_files 

     where name = :P14_FILE_BROWSE; 
    end; 

私は、この表で報告書を作成したとカラムIDをURLリンクP N =#のID番号として定義されています?。このリンクでファイルをダウンロードできます。セッションが終了するまでうまく動作します。セッションの期限切れファイルにアクセスできない場合(ウェブページが見つかりません)しかし、あなたがここに見ることができるようにファイルがまだファイルテーブルに格納されています。

files table

なぜ私のファイルは、pで何よりアクセスしていないN = ..セッション後に期限切れ?私は、Oracle Apex 5.1でOracle 12cを使用しています。

は、ドキュメントごととしてあなたに

+0

"temp"は "temporary"を表します。アイデアはファイルの一時的な保持領域だということです。セッションが終了する前に別の場所にコピーする必要があります。 –

+0

これで私はテーブル "ファイル"にデータをコピーします。 。他にも問題がありました。セッションの期限が切れた後は、pn = linkでアクセスできなくなりました。しかし、ダウンロードBLOBコンテンツの列タイプでデータにアクセスすることは問題ありません。 – john179

答えて

1

をお願いします: http://docs.oracle.com/cd/E59726_01/doc.50/e39143/toc.htm#HTMRN264

「どれを選択し、更新またはWWV_FLOW_FILES上で削除操作がAPEX_APPLICATION_TEMP_FILESテーブルを使用するように変更する必要があります削除はもはや必要で、ファイルとして。要求後またはセッションがパージされると自動的にパージされます "

+0

しかし、私は自分のファイルをテーブル "ファイル"に挿入しました。 apex_application_temp_filesのファイルは、セッションが終了しても自動的にパージされますが、それらはまだテーブルの "ファイル"にあります。私はそこにそれらを見ることができますが、彼らはアクセス可能ではありません。どうして?または、これはデータを格納するための正しい方法ではありませんか?編集:リンクの代わりにBLOBタイプの列を使用していますか?n =#ID#そしてそれは動作します – john179

0

ちょっとした提案: アップロードしたファイルに基づいてレポートへのリンクを定義するときは、セッションIDとデバッグIDを含めてください。

例:

'?P = & APP_ID F:' || PAGE_ID || ':。。& SESSION :: & DEBUG ::::'

これは、APP_ID(APP_ID)ここ

を有するアプリケーションのページ(PAGE_ID)へのリンクであっても、 PAGE_IDはレポートページで、このレポートは、ファイルブラウザを使用してアップロードされたファイルに基づいています。 私はセッションとデバッグIDを含むことを忘れてしまったので、私は新しいセッションで自分のレポートページを見つけることができませんでした。

関連する問題