我有一个发送pdf文件的路线:
app.get('/teste',function(req,res,next){
res.setHeader('content-type','application/pdf');
res.download(app.get('appPath')+'/teste.pdf');
}
我尝试使用其他大致相同的解决方案:
app.get('/teste',function(req,res,next){
res.setHeader('content-type','application/pdf');
fs.createReadStream(app.get('appPath')+'/teste.pdf').pipe(res);
}
和
app.get('/teste',function(req,res,next){
res.setHeader('content-type','application/pdf');
res.sendfile(app.get('appPath')+'/teste.pdf');
}
我的问题是当我在浏览器中询问此路线时,我收到一个空的pdf文件,其中包含与原始文件相同的页数。
我使用app.use(express.bodyParser());
配置了我的快速服务器。
任何人都可以帮助我?
答案 0 :(得分:11)
我在使用connect-livereload中间件时已经看到了这一点。问题是connect-livereload将js代码片段注入pdf数据流。它还可能导致其他非HTML数据出现问题。好消息是,这只会在开发过程中造成问题(你不应该在生产中加载这个中间件。)
这是最近修复的,但很多模板都包含旧版本,因此请检查您的package.json文件并在必要时获取最新版本。最近的connect-livereload版本是0.5.3。
答案 1 :(得分:0)
如果是ignore: ['.pdf']
行不起作用,可能是因为您没有查询具有相关后缀的资源。
E.g。如果查询具有id:
的资源localhost:9000/api/export/getExport?destinationId=56179bb36bc51bb00836c3ed
您无法过滤文件后缀。你可以做的是通过路径过滤:
app.use( require( 'connect-livereload' )( {
ignore: [ /api\/export\/getExport.*/ ]
} ) );
在connect-livereload处查看其他可能的选项。