我正在使用带有pdfkit的express.js,尝试生成pdf并强制在webbrowser中下载。
我定义了存储pdf的静态位置,但是当我想要读取此位置并下载文件时,没有任何反应。我也试过设置标题,但这不起作用。
我读过这可能与运行服务器和前端的端口有关。在我的例子中,它们是:4200(Angular)和8080(Node.js)
这是服务器代码的片段:
var downl = doc.pipe(fs.createWriteStream('C:/Users/Martyna/Desktop/test pdfow/out.pdf') );
doc.end();
downl.on('finish', function() {
res.download('C:/Users/Martyna/Desktop/test pdfow/out.pdf', 'out.pdf');
})
答案 0 :(得分:1)
您需要在响应中添加以下标题。要下载文件而不是查看
Content-Type: application/pdf
Content-Disposition: attachment; filename="You_File_Name.pdf"
向浏览器表明应该在浏览器中查看该文件:
Content-Type: application/pdf
Content-Disposition: inline; filename="You_File_Name.pdf"
答案 1 :(得分:0)
您只需读取文件并将其作为响应发送即可。 该代码对我有用!
fs.readFile('C:/Users/Martyna/Desktop/test pdfow/out.pdf',(err,data)=>{
if(err){
consol.log(err);
}else {
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'attachment; filename=your_file_name_for_client.pdf');
res.send(data)
}
})