vue axios下载pdf文件乱码空白postman可以

vue yekong

vue项目开发中,需要请求下载pdf文件,在postman里测试可以正常打开,但是vue下载后的文件乱码打开空白。

postman正常

vue axios下载pdf文件乱码空白postman可以

vue不正常

vue不正常

排查原因

排查发现请求接口返回的结果来看,request结果是MockXMLHttpRequest方式,并且responseType是空的,明明请求中设置responseType: "blob",这里是mock开头的方式,所以应该是mock.js数据模拟干扰了结果。

MockXMLHttpRequest

我们把mockjs删除,重新请求数据查看结果,这次请求类型变为了XMLHttpRequest,但是responseType仍然是空的。

XMLHttpRequest

排查代码

代码排查后发现responseType: "Blob"里的blob写成了大写,我们改成小写blob,再次请求看看。

const response = await axios({
  method: 'post',
  url: devIp + '/admin-api/consultation/pdfExport',
  data: mergedObject, // 注意:在axios中使用data属性发送请求体数据
  headers: {
    ...config.headers, // 展开原始config对象中的headers
    'Authorization': `Bearer ${localStorage.getItem('accessToken')}` // 假设你想要添加或覆盖Authorization头
  },
  responseType: "blob" // 确保响应类型为Blob
});

改成小写后,我们的responseType类型正常了。

blob

再看看我们下载的文件也正常了

vue axios下载pdf正常打开

喜欢