如何通过nodejs以正确的编码保存pdf

所以我想用我的脚本从网站上下载PDF文件,但问题是文件在这个过程中被破坏,我很确定这是因为使用了错误的编码。

我正在使用请求库下载文件,我已经将Content-type设置为application-pdf

我的代码很简单:4

 var fs = require('fs'); var request = require("request"); request({uri: 'xxxxxxxxxxxxxx.pdf', headers: { 'Content-type' : 'applcation/pdf' }} , function (error, response, body) { if (!error && response.statusCode == 200) { fs.writeFileSync("10111.pdf", body); } }) 

我在哪里需要指定用于此工作的编码?

我试图打开我得到的正常保存的PDF和SublimeText3编码帮助说它是在Windows中 – 而我下载的是在UTF8。

我已经通过了nodejs缓冲区和fs文件,并且不支持像windows-asd这样的编码,只是像'utf8'和'binary'这样的一般编码。

我是否应该使用不同的方法来获取文件?

我知道它很晚,但我今天看到你的问题,所以我正在回答,以便其他人可以从中获得帮助。 您可以在尝试写入文件时添加编码ie-:

 fs.writeFileSync("10111.pdf", body,'binary'); 

正如我设置编码格式为二进制在这里,你可以根据你的需求使用正确的编码格式,如果你想下载PDF,你可以设置编码为空。

希望这会有所帮助

为了正确书写PDF,您可能需要使用base64编码蒸汽。 这里有一个很好的答案

你可以在这里查看writeFileSync的文档

下面是代码的样子:

 var fs = require('fs'); var request = require("request"); request({uri: 'xxxxxxxxxxxxxx.pdf', headers: { 'Content-type' : 'applcation/pdf' }} , function (error, response, body) { if (!error && response.statusCode == 200) { fs.writeFileSync("10111.pdf", body, { encoding :'base64', } ); } })