一、代碼下載的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引用。