1

サーバーからPDFファイルをダウンロードし、それを開くか保存するかを尋ねるPHPスクリプトがあります。スクリプトは、ファイル名の代わりに使用されるワンタイムトークンを受け入れて、ファイル名を非表示にします。

実際のphpページにアクセスすると、http://example.com/files/download/tokenスクリプトが正常に機能し、PDFがダウンロードされます。

標準のリンクタグを使用してそのページにユーザーを送信することもできますが、ファイルがダウンロードされたら、そのダウンロードスクリプトを介して返されるそのページのコンテンツを更新する必要があります。

ajax呼び出しで新しいウィンドウを開いてファイルをダウンロードし、現在のページを更新するために必要なデータを返す方法はありますか?

ダウンロードスクリプトにはまだまだありますが、主要な部分は実際のダウンロード部分です。

 header("Content-type: application/pdf"); 
 $this->load->helper('file');
 readfile("static/temp_statements/".$local_file_name);
 unlink("static/temp_statements/".$local_file_name);
4

1 に答える 1

5

私が過去に使用した、あなたに役立つかもしれないトリックの1つは

  • PDFをダウンロードするには、ajax呼び出しでクエリパラメータを指定します。これは一意の名前になります。
  • ダウンロード用にPDFをストリーミングするサーバープロセスは、この一意の名前でCookieを設定します。
  • このCookieが表示されるのを待ってページをポーリングします。
  • Cookieが表示されたら、ファイルがダウンロードされたと見なすことができ、偶発的なアクションを実行できます。

そして、これを実現するためにウィンドウを開く必要はありません。次のように、非表示のiframeを追加することができます。

$(some selector).append($("<iframe width='1' height='1' frameborder='0' src='" + url + "'></iframe>"));

正直さと透明性の利益のために、私はもともとこのSOの答えからこのアイデアを見つけました、そしてそれは私のために働きました:ブラウザがファイルのダウンロードを受信するときを検出する

于 2013-02-23T20:10:58.447 に答える