首页 >web前端 >js教程 >如何使用Ajax在Struts2应用程序中异步下载文件?

如何使用Ajax在Struts2应用程序中异步下载文件?

Linda Hamilton
Linda Hamilton原创
2024-12-28 10:30:13482浏览

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