node.js – 如何从Node / Express应用程序向浏览器发送pdf文件

在我的Node / Express应用程序中,我有以下代码,它假设从文件中读取PDF文档,并将其发送到浏览器:

var file = fs.createReadStream('./public/modules/datacollectors/output.pdf','binary');
var stat = fs.statSync('./public/modules/datacollectors/output.pdf');
res.setHeader('Content-Length',stat.size);
res.setHeader('Content-Type','application/pdf');
res.setHeader('Content-disposition','attachment; filename=quote.pdf');
res.pipe(file,'binary');
res.end();

我没有收到任何错误,但我也没有在浏览器中获取文件.
我究竟做错了什么?

解决方法

您必须从可读流管道传输到可写流,而不是相反:

var file = fs.createReadStream('./public/modules/datacollectors/output.pdf');
var stat = fs.statSync('./public/modules/datacollectors/output.pdf');
res.setHeader('Content-Length','attachment; filename=quote.pdf');
file.pipe(res);

此外,您正在以错误的方式设置编码,如果需要,传递带编码的对象.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...