Express服务器发送空的PDF文件
我有一个路由,发送一个PDF文件:
app.get('/teste',function(req,res,next){ res.setHeader('content-type','application/pdf'); res.download(app.get('appPath')+'/teste.pdf'); }
我尝试使用另一种解决scheme,或多或less做同样的事情:
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());
configuration了我的快递服务器app.use(express.bodyParser());
。
任何人都可以帮助我?
我在使用connect-livereload中间件时看到了这个。 问题是connect-livereload是在pdf数据stream中注入一个js代码片段。 它也可能导致其他非HTML数据的问题。 好消息是,这只会在开发过程中引起问题(你不应该在生产中加载这个中间件)。
这是最近修复的,但是很多模板都包含了一个较老的版本,所以请检查你的package.json文件,如果需要的话获取最新版本。 最新的connect-livereload版本是0.5.3。
如果ignore: ['.pdf']
行不起作用,可能是由于您不查询具有相关后缀的资源。
例如,如果您查询具有ID的资源:
localhost:9000/api/export/getExport?destinationId=56179bb36bc51bb00836c3ed
您不能过滤文件后缀。 你可以做的是通过path过滤:
app.use( require( 'connect-livereload' )( { ignore: [ /api\/export\/getExport.*/ ] } ) );
查看connect-livereload的其他可能选项。