Rumah >hujung hadapan web >tutorial js >Bagaimanakah Kami Boleh Mengesan Selesai Muat Turun Fail Penyemak Imbas Tanpa Peristiwa Penyemak Imbas?

Bagaimanakah Kami Boleh Mengesan Selesai Muat Turun Fail Penyemak Imbas Tanpa Peristiwa Penyemak Imbas?

Barbara Streisand
Barbara Streisandasal
2024-12-23 21:11:14514semak imbas

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

Mengesan Selesai Muat Turun Fail Penyemak Imbas

Pernyataan Masalah

Halaman yang memaparkan mekanisme muat turun fail dinamik memerlukan penunjuk visual untuk isyarat apabila muat turun selesai. Walau bagaimanapun, penyemak imbas tidak selalu mencetuskan peristiwa untuk menunjukkan penerimaan fail apabila dialog "Simpan" muncul.

Penghadan Respons Pelayan

Peruntukan "Pelupusan Kandungan: lampiran" mengarahkan pelayar untuk memaparkan dialog "Simpan", tetapi ia menyekat pemuatan iframe yang digunakan untuk acara pemantauan.

Cadangan Penyelesaian

Melaksanakan penyelesaian berasaskan pelanggan yang memanfaatkan JavaScript dan kuki sebelah pelayan:

Algoritma Pelanggan

  1. Jana token unik.
  2. Serahkan permintaan muat turun dengan token.
  3. Paparkan penunjuk "menunggu".
  4. Tinjau pelayan pada selang masa yang tetap untuk kuki bernama "fileDownloadToken" yang sepadan dengan token.
  5. Jika kuki ditemui, alih keluar penunjuk "menunggu".

Pelayan Algoritma

  1. Ekstrak token daripada permintaan.
  2. Buat kuki dengan nama "fileDownloadToken" dan tetapkan nilainya kepada token yang diterima.

Contoh Pelaksanaan

  • JavaScript Bahagian Pelanggan (dipermudahkan)
var downloadToken = setFormToken();

var downloadTimer = setInterval(function() {
  var token = getCookie("fileDownloadToken");

  if(token == downloadToken) {
    unblockSubmit();
  }
}, 1000);
  • PHP Bahagian Pelayan (dipermudahkan)
// Set a cookie to unblock the submit button when download starts
$this->setCookieToken("downloadToken", $_GET["downloadToken"]);

$result = $this->sendFile();

Faedah

  • Tidak memerlukan penciptaan fail sementara.
  • Mengesan kesediaan muat turun fail tanpa bergantung pada pendengar acara.
  • Boleh disesuaikan dengan nama token dan kuki tertentu tetapan.

Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mengesan Selesai Muat Turun Fail Penyemak Imbas Tanpa Peristiwa Penyemak Imbas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn