Dalam era digital ini, muat turun fail ada di mana-mana. Dengan keupayaan Ajax, kami boleh meningkatkan pengalaman pengguna dengan membenarkan muat turun fail secara tidak segerak tanpa mengganggu interaksi halaman web.
Masalahnya
Apabila menggunakan tindakan Struts2 untuk fail sebelah pelayan memuat turun, menggunakan tindakan melalui jQuery mendapatkan semula data dalam aliran binari. Walau bagaimanapun, hasil yang diinginkan adalah untuk mencetuskan dialog simpan fail yang membolehkan pengguna menyimpan fail secara setempat.
Penyelesaian Penyemak Imbas Moden
Untuk penyemak imbas moden, pendekatan berikut ialah disyorkan:
fetch('titik akhir-muat turun-anda').kemudian(resp => resp.blob()).then(blob => {
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'tiada';
a.href = url;
a.muat turun = 'nama-fail-anda'; // Nyatakan nama fail yang dikehendaki
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
});
Kod ini mencipta URL sementara untuk data gumpalan, yang kemudiannya dilampirkan pada elemen penambat yang dilampirkan pada badan dokumen. Mengklik pada elemen penambat tersembunyi ini mencetuskan dialog simpan fail dan setelah muat turun selesai, URL sementara akan dibatalkan.
Pertimbangan
Walaupun pendekatan ini berfungsi dengan baik untuk fail kecil hingga sederhana, adalah penting untuk mempertimbangkan penggunaan memori untuk muat turun yang sangat besar. Jika anda menjangkakan fail besar, teknik alternatif seperti menggunakan iframe dan kuki mungkin lebih sesuai.
Atas ialah kandungan terperinci Bagaimanakah Ajax Boleh Mencetuskan Fail Simpan Dialog Secara Asynchronously untuk Pengalaman Pengguna yang Dipertingkatkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!