点击下方的按钮,将会异步下载文件。
``` ```javascript function downloadFile() { var xhr = new XMLHttpRequest(); xhr.open('GET','file-url',true); xhr.responseType = 'blob'; xhr.onload = function () { if (xhr.status === 200) { var blob = xhr.response; var a = document.createElement('a'); var url = window.URL.createObjectURL(blob); a.href = url; a.download = "filename.xlsx"; a.click(); window.URL.revokeObjectURL(url); } }; xhr.send(); } ``` 在上述代码中,我们通过使用 XMLHttpRequest 对象发送了一个 GET 请求,并将 response 的类型设置为 blob。在请求返回后,我们将 response 存储在一个 blob 对象中,并使用 URL.createObjectURL 创建一个临时的 URL。然后,我们创建了一个 'a' 标签,并设置其 href 为该临时 URL,download 属性为我们想要的文件名。最后,通过使用 a.click() 方法模拟用户点击该链接,文件将开始下载。 需要注意的是,我们在最后一步使用 window.URL.revokeObjectURL(url) 来释放创建的临时 URL,以防止在大量下载文件的情况下造成内存泄漏。 通过上述的代码,我们可以实现通过ajax 在后台下载文件的功能,并且不会弹出下载窗口,给用户带来不必要的打扰。这种方法可以用于各种场景,比如导出 Excel 表格、下载大附件等等。只需要根据实际需求,更改ajax 请求的 URL、response 的类型、文件名等参数即可。 总结起来,通过ajax 下载文件并不难实现,只需要使用 XMLHttpRequest 对象发送请求,并将 response 的类型设置为 blob。然后,通过FileReader 对象将返回的文件保存在本地。通过以上的步骤,我们可以在不打断用户当前操作的情况下,实现在后台下载文件的功能。希望本文对读者能够有所帮助,同时也希望读者能够进一步探索ajax 的其他应用场景以及相关技术。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。