ホームページ >ウェブフロントエンド >jsチュートリアル >ブラウザ イベントなしでブラウザ ファイルのダウンロード完了を確実に検出するにはどうすればよいでしょうか?
問題の説明
動的ファイル ダウンロード メカニズムを備えたページには、次のことを行うための視覚的なインジケーターが必要です。ダウンロードが完了すると信号を送ります。ただし、ブラウザは、「保存」ダイアログが表示されたときにファイルの受信を示すイベントを常にトリガーするとは限りません。
サーバー応答の制限
「Content-Disposition:」の規定「attachment」ヘッダーはブラウザに「保存」ダイアログを表示するように指示しますが、イベントに使用される iframe の読み込みは抑制されます。
提案されたソリューション
JavaScript とサーバー側 Cookie を活用したクライアントベースのソリューションを実装します:
クライアント アルゴリズム
サーバー アルゴリズム
実装例
var downloadToken = setFormToken(); var downloadTimer = setInterval(function() { var token = getCookie("fileDownloadToken"); if(token == downloadToken) { unblockSubmit(); } }, 1000);
// Set a cookie to unblock the submit button when download starts $this->setCookieToken("downloadToken", $_GET["downloadToken"]); $result = $this->sendFile();
利点
以上がブラウザ イベントなしでブラウザ ファイルのダウンロード完了を確実に検出するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。