Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

node.js - Express server send empty PDF file

I have a route that sends a pdf file:

app.get('/teste',function(req,res,next){
    res.setHeader('content-type','application/pdf');
    res.download(app.get('appPath')+'/teste.pdf');
}

I tried use another solutions that do more or less the same thing:

app.get('/teste',function(req,res,next){
    res.setHeader('content-type','application/pdf');
    fs.createReadStream(app.get('appPath')+'/teste.pdf').pipe(res);
 }

and

app.get('/teste',function(req,res,next){
        res.setHeader('content-type','application/pdf');
        res.sendfile(app.get('appPath')+'/teste.pdf');
}

My problem is when I ask this route in browser and I receive an empty pdf file with the same number of pages that the original file.

I configured my express server with app.use(express.bodyParser());.

Anyone can help me?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I've seen this when using connect-livereload middleware. The problem is that connect-livereload is injecting a js code snippet into the pdf data stream. It can also cause problems with other non-html data. The good news is that this should only cause problems during development (you shouldn't be loading this middleware in production.)

This was recently fixed but a lot of templates include an older version so check your package.json file and get the latest version if necessary. The most recent connect-livereload version is 0.5.3.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...