无法使用 express.js 强制下载 pdf
Can't force the pdf download with express.js
我将 express.js 与 pdfkit 一起使用,尝试生成 pdf 并在网络浏览器中强制下载。
我定义了存储 pdf 的静态位置,但是当我想读取此位置并下载文件时,没有任何反应。我也试过设置 headers,但没有用。
我读到这可能与服务器上的端口有关,front-end 是 运行。就我而言,这些是: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');
})
您需要将以下 headers 添加到您的回复中。下载文件而不是查看文件
Content-Type: application/pdf
Content-Disposition: attachment; filename="You_File_Name.pdf"
向浏览器表明应该在浏览器中查看该文件:
Content-Type: application/pdf
Content-Disposition: inline; filename="You_File_Name.pdf"
您只需读取文件并将其作为响应发送即可。
此代码对我有用!
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)
}
})
我将 express.js 与 pdfkit 一起使用,尝试生成 pdf 并在网络浏览器中强制下载。
我定义了存储 pdf 的静态位置,但是当我想读取此位置并下载文件时,没有任何反应。我也试过设置 headers,但没有用。
我读到这可能与服务器上的端口有关,front-end 是 运行。就我而言,这些是: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');
})
您需要将以下 headers 添加到您的回复中。下载文件而不是查看文件
Content-Type: application/pdf
Content-Disposition: attachment; filename="You_File_Name.pdf"
向浏览器表明应该在浏览器中查看该文件:
Content-Type: application/pdf
Content-Disposition: inline; filename="You_File_Name.pdf"
您只需读取文件并将其作为响应发送即可。 此代码对我有用!
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)
}
})