Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Muat Turun Fail Secara Asynchronously dalam Aplikasi Struts2 Menggunakan Ajax?

Bagaimanakah Saya Boleh Muat Turun Fail Secara Asynchronously dalam Aplikasi Struts2 Menggunakan Ajax?

Linda Hamilton
Linda Hamiltonasal
2024-12-28 10:30:13488semak imbas

How Can I Asynchronously Download Files in a Struts2 Application Using Ajax?

Muat Turun Fail Asynchronous dengan Ajax

Masalah:

Dalam aplikasi Struts2, panggilan jQuery Ajax mendapatkan semula data strim binari mewakili fail untuk dimuat turun, tetapi pengguna tidak dapat menyimpan fail tersebut setempat.

Penyelesaian:

Pendekatan Penyemak Imbas Moden (2019 dan Kemudian)

Untuk pelayar moden, pendekatan yang dipermudahkan boleh diterima pakai:

  1. Gunakan fetch() API untuk mengambil fail:

    fetch('https://jsonplaceholder.typicode.com/todos/1')
      .then(resp => resp.blob())
  2. Buat URL objek untuk fail:

      .then(blob => {
     const url = window.URL.createObjectURL(blob);
  3. Buat yang tersembunyi elemen dan tetapkan atributnya:

     const a = document.createElement('a');
     a.style.display = 'none';
     a.href = url;
     a.download = 'todo-1.json';
  4. Tambahkan elemen pada dokumen dan klik padanya:

     document.body.appendChild(a);
     a.click();
  5. Alih keluar URL objek :

     window.URL.revokeObjectURL(url);
  6. Beritahu pengguna yang berjaya muat turun:

     alert('your file has downloaded!');

Pertimbangan Tambahan:

  • Pastikan keserasian dengan penyemak imbas sasaran.
  • Kendalikan besar muat turun fail secara berasingan untuk mengelakkan potensi masalah prestasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Muat Turun Fail Secara Asynchronously dalam Aplikasi Struts2 Menggunakan Ajax?. 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