node.js - Node js 将 pdf 缓冲区转换回 pdf

标签 node.js express xmlhttprequest pdf-generation body-parser

我使用 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/

相关文章:

javascript - 我如何 stub fs 回调的注入(inject)参数以消除在测试套件中接触文件系统的需要?

javascript - Amazon Alexa Skill Lambda 代码无法执行

node.js - 为什么我不能使用相关 mongo 文档中的 id 在 GridFS 上设置 id

javascript - 如何使用 jQuery 异步上传文件?

php - 在 phalcon 框架中的 xmlhttprequest 情况下如何禁用渲染布局?

JavaScript 数组反混淆

node.js - 来自 Node azure 函数中的请求函数的 context.log 发出警告

node.js - 部署后在我的 Express 应用程序上获取 404

node.js - 如何打开控制台与 Express 应用交互?

javascript - Mobile Safari 上的 XHR 请求不返回任何内容