我使用 JavaScript 浏览器创建了一个 pdf 文件,并使用以下代码通过 post 将其发送到服务器:
var blob = pdf.output('blob')
var xhr = new XMLHttpRequest();
xhr.open('post','/upload', true);
xhr.setRequestHeader("Content-Type", "application/pdf");
xhr.send(blob);
我想在运行 Node 和 Express 的服务器上另存为 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);
}
req.body是一个Buffer,Uint8Array[653120]:
在保存到服务器之前,我需要帮助将其转换回 pdf。任何帮助,将不胜感激。谢谢。
最佳答案
缓冲区是文字二进制表示形式。只需直接将其写入文件而无需 .toString()
,它应该是您想要的文件。
例如尝试 fs.writeFileSync('some.pdf', req.body)
我实际上并不建议使用writeFileSync
-而是使用writeFile
,它是异步的并且需要回调,但不会阻止其他http请求被接受。
缓冲区只是一个没有任何编码的字节序列。如果您希望注销时正文看起来像 xml,请尝试使用 .toString('utf8')
。 hex/utf8/base64 只是二进制的表示。它们就像一个解包或打包数据的函数。在这种情况下,您希望缓冲区中的字节序列按原样存在于磁盘上;所以搞乱编码是不可取的。
关于node.js - Node js 将 pdf 缓冲区转换回 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45996239/