后端返回文件数据流,前端如何解析下载 一看就会
后端返回文件数据流,前端如何解析下载
·
下载文件作为前端常用技术,那么当后端给前端返回的是一串数据流的时候,我们应该怎么去解析并下载该文件呢?
很简单,
首先,我们只需要在调用该下载接口的时候顺便将blob(二进制大对象,可以存储二进制文件的一个容器)当作一个参数传递给后端,具体代码如下:
export const downloadUpload = (id)=>axios.get(`下载路径+下载文件id`, {responseType: 'blob'});
其中第一个参数为文件的下载路径及文件id 第二个参数就是我上面说的blob了。
如果我们没有传递第二个参数会得到什么呢?请看下图:
当你传递了第二个参数,并且代码正确的话,得到的应该是这样:
第一步设置好以后咱们进入下一步:
首先我们调用该设置好的函数,拿到后端给的返回值,然后请看下图
downloadUpload(id).then((res) => {
console.log(res);
const link = document.createElement('a'); //创建一个a标签
const blob = new Blob([res]); //实例化一个blob出来
link.style.display = 'none';
link.href = URL.createObjectURL(blob); //将后端返回的数据通过blob转换为一个地址
//设置下载下来后文件的名字以及文件格式
link.setAttribute(
'download',
`${upload.fileName}.` + `${upload.fileExtension}`, //upload为下载的文件信息 可以在外层包一个函数 将upload作为参数传递进来
);
document.body.appendChild(link);
link.click(); //下载该文件
document.body.removeChild(link);
});
至此,文件就可以成功下载下来啦!!!!
更多推荐
已为社区贡献1条内容
所有评论(0)