PDFを作成するのに少し時間がかかるPDFエクスポートがあります。ユーザーにエクスポートリンクをクリックさせてすぐにダウンロードダイアログを表示させたい。これにより、ダウンロードを開始して完了するまで待つことができます。リンクをクリックするのではなく、世代を待ってからダウンロードをもう一度待ちます。ヘッダを受信した直後にダウンロードダイアログを表示する
はここでPHPに非常に単純な例です:
<?php
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename=test.pdf');
flush();
// time consuming PDF creation happens here
sleep(15);
echo 'pdf contents would be here';
アイデアはゆっくりと、ブラウザに、フラッシュ()、それらを適切なヘッダを送信するPDFを作成し、最終的にそれをブラウザに送信することです。
これはクロムで完全に機能します。ダウンロードダイアログが即座にポップアップし、スリープはダウンロード待ち時間の一部です。
FirefoxとInternetExplorerでは、これは機能しません。これらのブラウザはダウンロードダイアログを表示する前に15秒間待機します。
ダウンロードダイアログをすぐにポップアップさせるには、どんな考えがあれば大歓迎です。
。私はこれをもう一度試しましたが、うまくいきません。確かに、私はあなたのコードをFirefoxでもう一度試しました。それはまだ15秒待ってからダウンロードダイアログをポップアップします。 –
@AndreasGohr出力バッファリングが無効になっているので、あなたは 'flush()'だけを使っていると仮定しました。それが機能しないという事実は、あなたが持っていないことを意味します。出力バッファリングの設定に関係なく動作するようにコードを更新しました。 – Rei
奇妙な。あなたが正しいです、私は出力バッファリングが有効になっていないと思ったが、あなたの追加でそれは動作します!どうもありがとう! –