ホームページ >ウェブフロントエンド >jsチュートリアル >ブラウザでファイルのダウンロード完了を確実に検出するにはどうすればよいですか?

ブラウザでファイルのダウンロード完了を確実に検出するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-05 21:06:49463ブラウズ

How Can I Reliably Detect File Download Completion in a Browser?

ファイルのダウンロード完了の検出を処理します

問題:

ブラウザがファイルを完全に受信したときの検出待機インジケータを表示する場合、動的に生成されたファイルのダウンロードが重要になります。現在、iframe の「load」イベントを使用しても、ブラウザの不一致によりこの問題に対処できません。

解決策 1: ブラウザベースのトークン検証

クライアント側 JavaScript解決策には以下が含まれます:

  • ダウンロード用の一意のトークンの生成request.
  • トークンを使用してリクエストを送信します。
  • 「待機中」インジケーターを表示します。
  • トークン値を使用して対応する Cookie を定期的にチェックするようにタイマーを設定します。
  • Cookie が見つかったときにインジケーターを非表示にします。

オンサーバー側のアルゴリズム:

  • リクエスト内のトークンを確認します。
  • 見つかった場合は、トークン値を使用して Cookie を設定します。

コードスニペット(JavaScript):

function setFormToken() {
  var downloadToken = new Date().getTime();
  document.getElementById("downloadToken").value = downloadToken;
  return downloadToken;
}

コード スニペット (PHP):

// Set a cookie to unblock submit button when download begins.
$TOKEN = "downloadToken";
$this->setCookieToken($TOKEN, $_GET[$TOKEN]);

解決策 2: サーバー ポーリング

あるいは、サーバー側のアプローチ

  • ファイルの作成を開始します。
  • 完了するまでサーバーをポーリングします。
  • 準備ができたファイルをダウンロードします。

このメソッドは次のことを回避します。一時的なサーバー ファイルを作成します。ただし、待機期間中にクライアントとサーバーの通信が必要です。

長所と短所:

ブラウザ トークンを使用すると動的検出が可能になりますが、ブラウザの互換性の問題が発生する可能性があります。 。サーバーポーリングは信頼性が高くなりますが、時間がかかります。

以上がブラウザでファイルのダウンロード完了を確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。