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引用。

     

原文地址:https://www.cnblogs.com/zhinian-/p/15070207.html