我正在通过axios向服务器发送请求。作为响应,我从服务器获取此代码。我认为这是缓冲区类型的东西。对此一无所知。
%PDF-1.3\n' +
'%����\n' +
'1 0 obj\n' +
'<<\n' +
' /CreationDate (D:20201204055104Z)\n' +
' /ModDate (D:20201204055104Z)\n' +
'>>\n' +
'endobj\n' +
'2 0 obj\n' +
我想将此回复保存为pdf格式。我已经尝试过此代码,但它只会生成空白的pdf文件。这是我的代码
const url = "https://api-stage-starfleet.delhivery.com/package/DL000246845CN/shipping-label";
// Headers config
const config = {
headers: {
'Accept': 'application/pdf',
'id_token': id_token,
'Authorization': auth_token,
}
}
axios.get(url, config)
.then((response) => {
fs.writeFile("output.pdf", response.data, function (err) {
if (err) {
return console.log(err);
}
console.log("The file was saved!");
});
})
.catch((err) => {
console.log(err);
})
我也尝试过在标头对象中添加编码。但是它不起作用,只能生成空白pdf。谁可以帮我这个事。
默认情况下,axios将使用字符串作为其响应类型。为了告诉它使用二进制数据,您传递了一个名为的配置responseType
:
const config = {
headers: {
'Accept': 'application/pdf',
'id_token': id_token,
'Authorization': auth_token,
},
responseType: 'buffer'; // <-- Here -----
}
然后,您writeFile
将可以工作,但是请注意,将响应从axios传递到文件的效率要高得多:
axios({
method: "get",
headers: {
'Accept': 'application/pdf',
'id_token': id_token,
'Authorization': auth_token,
},
responseType: "stream"
}).then(function (response) {
response.data.pipe(fs.createWriteStream("output.pdf"));
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句