无法使用 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)
}
})