【问题标题】:Node js Converting pdf Buffer back to pdfNode js将pdf缓冲区转换回pdf
【发布时间】:2018-09-18 06:00:07
【问题描述】:

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

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。任何帮助,将不胜感激。谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 2017-07-19
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多