JS之blob对象下载文件,解决word可能打开是乱码,xlsx文件打不开,图片显示格式不支持等问题

请求接口后,接口返回的要是一个文件流的数据。

请示到数据之后用blob对象进行对数据处理;

downloadFile(file) {
      dwonloadFiles({ fileName: file.name }).then(response => {
        let blob = new Blob([response]);
        let downloadElement = document.createElement("a");
        let href = window.URL.createObjectURL(blob); //创建下载的链接
        downloadElement.href = href;
        console.log(file.name, "文件名");
        downloadElement.download = file.name; //下载后文件名
        document.body.appendChild(downloadElement);
        downloadElement.click(); //点击下载
        document.body.removeChild(downloadElement); //下载完成移除元素
        window.URL.revokeObjectURL(href); //释放掉blob对象
      });
    },

如果直接这样写的的话,下载下来的文件,像word可能打开是乱码,xlsx文件打不开,图片显示格式不支持,因此,需要在请求接口的时候加上此属性:responseType: 'blob'

// 知识链库下载文件
export function dwonloadFiles(query) {
  return request({
    url: '/system/knowledgechain/download',
    method: 'get',
    params: query,
    responseType: 'blob'
  })
}

 

posted @ 2021-09-16 14:21  夏小夏吖  阅读(4169)  评论(0编辑  收藏  举报