首頁 >web前端 >js教程 >如何使用Ajax在Struts2應用程式中非同步下載檔案?

如何使用Ajax在Struts2應用程式中非同步下載檔案?

Linda Hamilton
Linda Hamilton原創
2024-12-28 10:30:13489瀏覽

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

使用 Ajax 進行非同步檔案下載

問題:

在 Struts2 應用程式中,jQuery Ajax呼叫檢索二進位串流資料代表要下載的文件,但使用者無法儲存該檔案

解決方案:

現代瀏覽器方法(2019及更高版本)

對於現代瀏覽器,簡化的方法可以被採用:

  1. 使用fetch() API 用於取得檔案:

    fetch('https://jsonplaceholder.typicode.com/todos/1')
      .then(resp => resp.blob())
  2. 為檔案建立對象URL:

      .then(blob => {
     const url = window.URL.createObjectURL(blob);
  3. 建立隱藏物件元素並設定其屬性:

     const a = document.createElement('a');
     a.style.display = 'none';
     a.href = url;
     a.download = 'todo-1.json';
  4. 將元素附加到文件並點選它:

     document.body.appendChild(a);
     a.click();
  5. 刪除物件URL :

     window.URL.revokeObjectURL(url);
  6. 通知用戶成功下載的信息:

     alert('your file has downloaded!');

其他注意事項:

  • 確保與目標瀏覽器的相容性。
  • 單獨處理大型檔案下載以避免潛在的效能問題。

以上是如何使用Ajax在Struts2應用程式中非同步下載檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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