首頁 >web前端 >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解決方案涉及:

  • 產生用於下載的唯一令牌請求。
  • 使用令牌提交請求。
  • 顯示「等待」指示器。
  • 設定計時器以定期檢查具有令牌值的對應 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]);
程式碼片段(PHP):

解決方案2:伺服器輪詢
  • 或者,伺服器端方法涉及:
  • 啟動檔案建立。
輪詢伺服器直至完成。

下載準備好的檔案。

此方法避免了建立臨時伺服器檔案。然而,它需要在等待期間進行客戶端與伺服器的通訊。

優點和缺點:使用瀏覽器令牌允許動態偵測,但可能存在瀏覽器相容性問題。伺服器輪詢是一種更可靠但速度較慢的選項。

以上是如何在瀏覽器中可靠地偵測文件下載完成?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn