Node js将pdf缓冲区转换回pdf

dra*_*ram 5 pdf-generation xmlhttprequest node.js express body-parser

我已经使用Java的浏览器创建了一个pdf文件,并使用以下代码通过邮政将其发送到服务器:

var blob = pdf.output('blob')
var xhr = new XMLHttpRequest();
xhr.open('post','/upload', true);
xhr.setRequestHeader("Content-Type", "application/pdf");                                
xhr.send(blob);
Run Code Online (Sandbox Code Playgroud)

我想在Express上运行Node的服务器上另存为pdf。我已经使用express和body-parser包提出了以下代码:

const bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ limit: '1gb', extended: false }));
app.use(bodyParser.raw({ limit: '1gb', type: 'application/pdf' }));

app.post('/upload', function(req, res){
   console.log(req.body);      
}
Run Code Online (Sandbox Code Playgroud)

req.body是一个缓冲区,Uint8Array [653120]:

在将其保存到服务器上之前,我需要帮助将其转换回pdf。任何帮助,将不胜感激。谢谢。

Cat*_*yst 6

缓冲区是字面量的二进制表示。直接把它写到一个文件中.toString(),它应该是你想要的文件。

例如尝试 fs.writeFileSync('some.pdf', req.body)

我实际上并不推荐使用writeFileSync- 而是使用writeFile它是异步的并且需要回调,但不会阻止其他 http 请求被接受。

缓冲区只是一个没有任何编码的字节序列。如果您希望在注销时 body 看起来像 xml,请尝试.toString('utf8')一下。hex/utf8/base64 只是二进制的表示。它们就像一个解包或打包数据的函数。在这种情况下,您希望缓冲区中的字节序列按原样存在于磁盘上;所以搞乱编码是不可取的。