我正在处理在服务器上创建PDF文档的应用,然后显示Download Here
按钮。单击按钮时,该过程似乎有效。当我在Chrome控制台中检查网络>预览和网络>标题标签时,我可以看到该文件已被确定返回。
问题是,它没有显示,也没有提供保存选项。我错过了客户方面的一步吗?我的首选结果是让用户选择保存文件或自动开始下载到默认路径。
这与服务器代码相关:
exports.show = function(req, res) {
var file = req.params.id;
var filePath = __dirname + '../../../lib/completedforms/';
var thisPath = path.resolve(filePath + file);
res.attachment(thisPath);
res.setHeader('Content-Type', 'application/pdf');
res.setHeader("Content-Disposition", "attachment");
res.download(thisPath);
};
预先感谢此处的任何指导。
答案 0 :(得分:2)
不需要res.attachment()
AND res.download()
。只需使用后者。
此外,res.download()
已经设置了Content-Disposition
标题,因此您也可以将其删除。
您还可以简化路径生成:
var thisPath = path.resolve(__dirname, '../../../lib/completedforms/', file);
虽然您可能应该清理file
和/或检查thisPath
是否不在某个位置。这样可以防止有人提供类似req.params.id
的潜在恶意../../../../../../../etc/passwd
值。