问题:
在 Struts2 应用程序中,jQuery Ajax 调用检索二进制流数据代表要下载的文件,但用户无法保存该文件
解决方案:
现代浏览器方法(2019 及更高版本)
对于现代浏览器,简化的方法可以被采用:
使用fetch() API 用于获取文件:
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(resp => resp.blob())
为文件创建对象 URL:
.then(blob => { const url = window.URL.createObjectURL(blob);
创建隐藏对象元素并设置其属性:
const a = document.createElement('a'); a.style.display = 'none'; a.href = url; a.download = 'todo-1.json';
将元素附加到文档并单击它:
document.body.appendChild(a); a.click();
删除对象 URL :
window.URL.revokeObjectURL(url);
通知用户成功下载的信息:
alert('your file has downloaded!');
其他注意事项:
以上是如何使用Ajax在Struts2应用程序中异步下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!