我想将八位字节流类型的数据保存到pdf文件中,该数据是正确的,因为我尝试使用Postman的“发送并保存”功能来成功获取并打开pdf文件。
但是,一旦我调用axios请求并收到服务器的响应,就无法获得正确的pdf文件。收到pdf文件后,似乎文件已损坏,我无法正确打开它。
以下是响应的标题: enter image description here
axios.create({
baseURL: link,
timeout: 60000,
headers: {
Authorization: token
}
}).post(apiUrl, {
.
.
.
}).then(res=>{
var file_data = res["data"];
var file_type = res["headers"]["content-type"];
var blob = new Blob([file_data], {type: file_type});
saveAs(blob, "Test.pdf")
});
答案 0 :(得分:0)
我找到了解决此问题的方法,似乎文件的大小与原始文件不同,并且进行了以下更改以接收Blob对象形式的数据来解决该问题。
axios.create({
baseURL: link,
timeout: 60000,
responseType: 'blob'
headers: {
Authorization: token
}
}).post(apiUrl, {
.
.
.
}).then(res=>{
var file_data = res["data"];
var file_type = res["headers"]["content-type"];
saveAs(file_data, "Test.pdf");
});
答案 1 :(得分:0)
使用axios下载二进制文件时,需要在请求中指定服务器返回的数据格式。如果是PDF文件,一般需要用到“arraybuffer”。
axios.get(
"https://example.com/example.pdf",
{
responseType: "arraybuffer"
}
);
根据文档,有效的选项是:
// `responseType` indicates the type of data that the server will respond with
// options are: 'arraybuffer', 'document', 'json', 'text', 'stream'
// browser only: 'blob'
// default: 'json'