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' }) }
是我吖~