首頁 >web前端 >js教程 >我們如何在沒有瀏覽器事件的情況下可靠地偵測瀏覽器檔案下載完成?

我們如何在沒有瀏覽器事件的情況下可靠地偵測瀏覽器檔案下載完成?

Barbara Streisand
Barbara Streisand原創
2024-12-23 21:11:14434瀏覽

How Can We Reliably Detect Browser File Download Completion Without Browser Events?

偵測瀏覽器檔案下載完成

問題陳述

具有動態檔案下載機制的頁面需要一個視覺指示器下載完成時發出訊號。然而,當出現「儲存」對話方塊時,瀏覽器並不總是觸發事件來指示文件接收。

伺服器回應限制

「內容處置:「附件」標頭指示瀏覽器顯示「儲存」對話框,但它會抑制用於事件的iframe 的載入

建議的解決方案

利用JavaScript和伺服器端 cookie 實作基於客戶端的解決方案:

客戶端演算法

  1. 產生一個獨特的令牌。詢伺服器以尋找符合的名為“fileDownloadToken”的cookie令牌。
  2. 伺服器演算法
  3. 從請求中提取令牌。 Cookie並將其值設定為接收到的token.

範例實作

  1. 客戶端JavaScript
  2. (簡化)

伺服器端PHP
    (簡單)
優點
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();

不不無>需要建立臨時檔案。 cookie 設定進行自訂。

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

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