PDF文件在浏览器中下载不正确,但使用带有NodeJS / Express的wget或curl很好

时间:2014-12-18 23:07:02

标签: node.js pdf express

我在nodejs / express中有一个应用程序,它生成一个PDF并在响应中将其流式传输。当我通过curl或wget执行请求时,文件下载就好了。

当我在浏览器上执行请求时,文件未正确下载。好奇的是,文件大小更大(使用wget / curl下载时为59k,但在浏览器中下载时为101k)

这是生成响应的代码段:

fs.readFile('file.pdf', function(err, data) {
  res.setHeader('Content-Disposition', 'attachment; filename=' + req.params.id + '.pdf');
  res.setHeader('Content-Type', 'application/pdf');                
  res.setHeader('Content-Length', data.length);
  res.status(200).end(data);
});

我不知道我是否错过了标题,或者请求中是否有我应该关注的内容我不是,但我不知道为什么会这样。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

自己想出来。

必须改变这一行

res.status(200).end(data);

res.status(200).end(data, 'binary');

一旦我改变它,pdf就完美地发送了。

如果未设置编码,Express会尝试将其写为UTF-8(产生不需要的结果)。

每当通过Express发送二进制文件时都会考虑到这一点。