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

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

我已经在 J​​avascript 浏览器中创建了一个 pdf,并使用以下代码通过邮寄将其发送到服务器:

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

我想在使用 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);      
}

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

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

最佳答案

缓冲区是文字二进制表示。不用.toString()直接写入文件就可以了,应该就是你想要的文件了。

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

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

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

关于node.js - Node js将pdf缓冲区转换回pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722745/

相关文章:

javascript - 将模块包含到另一个nodeJS文件中

node.js - Nestjs: Mongoose 中子文档数组的正确模式(没有默认 _id 或重新定义 ObjectId)

javascript - 尝试删除 Node.js Express MongoDB Jade 应用程序中的条目

node.js - nodejs - req.body 未定义

javascript - 没有 CORS 或 JSONP 的跨域请求

ajax - 要求Chrome像在Firefox中那样绕过XmlHttpRequest的本地缓存?

node.js - 如何使用socket io连接?

javascript - 如何使用nodejs实现分段文件上传代理?

Node.js/express.js/Backbone.js : req. body.keys 未定义?

javascript - 如何拦截 xhr POST 参数/POST 正文?