本文介绍: 在实际开发中,我们经常会遇到下载文件的需求,一般情况下接口最好的处理方式为上传到文件对象存储服务器,然后给前端返回一个下载文件的URL,前端直接打开链接下载就可以了,但…在下载数据量大且参数复杂的情况下,不排除后端接口使用POST请求直接返回文件流格式的数据,这时候前端要下载就比较麻烦了。目前前端领域大多项目都使用三大框架,接口请求也大多使用axios,于是我便记录一下如何使用axios来下载后端返回的文件流格式的文件。好了,现在在点击下载按钮事件中调用下载方法就可以啦~
在实际开发中,我们经常会遇到下载文件的需求,一般情况下接口最好的处理方式为上传到文件对象存储服务器,然后给前端返回一个下载文件的URL,前端直接打开链接下载就可以了,但…在下载数据量大且参数复杂的情况下,不排除后端接口使用POST请求直接返回文件流格式的数据,这时候前端要下载就比较麻烦了
目前前端领域大多项目都使用三大框架,接口请求也大多使用axios,于是我便记录一下如何使用axios来下载后端返回的文件流格式的文件
export downloadApi = (params) => {
return axios.post(`/download/file`, params, {
responseType: 'blob'
})
}
- 下载返回的流文件
const downloadFile = () => {
const downloadParams = {} // 这里是下载接口请求参数
try {
downloadApi(downloadParams).then((res) => { // res为后端返回的文件流,浏览器network看到接口返回的是乱码
const blob = new Blob([res]);
const downloadURL = (window.URL || window.webkitURL).createObjectURL(blob);
let a = document.createElement("a");
a.download = '这里是下载的文件名称';
// 创建二进制对象
a.href = downloadURL;
// 模拟点击
a.click();
//释放资源并删除创建的a标签
URL.revokeObjectURL(downloadURL);// a.href
});
} catch(e) {
Promise.reject(e)
}
}
原文地址:https://blog.csdn.net/qq_33036599/article/details/134672243
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22666.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。