我正在调用一个 api 并获得 pdf 作为回报。
fetch(`api` + guid, {
method: "GET",
headers: {
"Accept": "application/octet-stream",
"Authorization": "Bearer " + token,
},
responseType: 'arraybuffer',
})
.then((res) => res.text())
.then((data) => {
fs.writeFileSync('file.pdf', data);
});
我得到了 pdf 文件,但问题是 pdf 文件始终为空。但是当我接受响应作为 json 时,它工作正常。
我发现了类似的问题,但没有一个解决方案对我有用。
如果有人能指出这个问题,那就太好了。
原文由 Yogesh Bhattarai 发布,翻译遵循 CC BY-SA 4.0 许可协议
我发现了问题。因为我使用的是 fetch 而不是 Axios。我们不能将 responseType 作为 Fetch 的选项传递。
相反,响应本身可以作为 arraybuffer 传递,如下所示。
代替
现在不是直接使用响应来编写我们的 pdf 文件。我们可以将数据更改为 base64 字符串并再次解码以创建我们的 pdf 文件。我使用 base64ToPdf npm 包来处理它。
我希望这对其他人有帮助。 :)