vue项目开发中,需要请求下载pdf文件,在postman里测试可以正常打开,但是vue下载后的文件乱码打开空白。
postman正常
vue不正常
排查原因
排查发现请求接口返回的结果来看,request结果是MockXMLHttpRequest方式,并且responseType是空的,明明请求中设置responseType: "blob"
,这里是mock开头的方式,所以应该是mock.js数据模拟干扰了结果。
我们把mockjs删除,重新请求数据查看结果,这次请求类型变为了XMLHttpRequest,但是responseType仍然是空的。
排查代码
代码排查后发现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类型正常了。
再看看我们下载的文件也正常了