Express服务器发送空PDF文件

时间:2015-02-09 15:10:55

标签: node.js pdf express

我有一个发送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());配置了我的快速服务器。

任何人都可以帮助我?

2 个答案:

答案 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处查看其他可能的选项。