vue axios 下载流文件zip包 无法打开/解压 postman测试下载一切正常
一、代码下载的zip与postman下载的zip文件对比,大小不一样,postman下载的文件可以正常解压,代码下载的文件解压报错,如下图;
二、上代码
axios({ method: 'post', url: url, headers: { 'content-type': 'application/json;charset=utf-8', }, responseType: 'blob', data: data }).then(res=>{ console.log(res) let blob = new Blob([res.data], {type: 'application/zip'}); if ('download' in document.createElement('a')) { // 非IE下载 const elink = document.createElement('a') let fileName= window.decodeURI(res.headers['content-disposition'].split('=')[1], "UTF-8") elink.target = "hrefTemplate"; elink.download = fileName; elink.href = URL.createObjectURL(blob) elink.click() URL.revokeObjectURL(elink.href) // 释放URL 对象 } else { // IE10+下载 navigator.msSaveBlob(blob, fileName) } })
三、对比打印结果,如下图, 分析得出原因:使用了mockjs模拟数据 导致的返回结果错误,解决办法就是注释掉mock引用。