我正在执行一个API请求,该请求发送PDF文件作为响应,但是当访问该路由时,将立即强制下载该文件。我只想在客户端浏览器中显示PDF文件,而不下载它。
exports.print = (req,res) => {
request("API").on('response', function(response) {
res.set({
'Content-Disposition': 'inline; filename=my.pdf',
'Content-Type': 'application/pdf'
});
})
.pipe(res);
}
答案 0 :(得分:0)
检查https://gist.github.com/adamgibbons/af2de54c011e68a7b85a zishon89答案,它应该可以完成工作。
var express = require('express'),
fs = require('fs'),
app = express();
app.get('/', function (req, res) {
var filePath = "/files/my_pdf_file.pdf";
fs.readFile(__dirname + filePath , function (err,data){
res.contentType("application/pdf");
res.send(data);
});
});
app.listen(3000, function(){
console.log('Listening on 3000');
});
答案 1 :(得分:0)
我已经测试了以下代码,它在chrome浏览器中正常运行。请尝试以下代码一次。(请安装npm请求包。您也可以使用async并等待)
我从外部api获取了pdf,并将其存储在“ test.pdf”中,之后,我正在读取该pdf文件并将数据发送到浏览器。
exports.sendPDFFIle=(req,res)=>{
request=require('request');
const fs=require('fs');
request('http://www.africau.edu/images/default/sample.pdf').pipe(fs.createWriteStream('../TestPdf/test.pdf'))
var data = fs.readFileSync('../TestPdf/test.pdf');
res.contentType("application/pdf");
res.send(data);
};