node.js - 下载 PDF nodejs + expressjs
问题描述
我正在发出 GET 请求以通过浏览器下载 PDF 文件,但没有得到响应。我不知道我要去哪里错了。按照我的代码
我的控制器
download: function(req, res) {
var nomeContrato = req.params.contrato;
var cpfAluno = req.params.cpf
db.query("select descricao from tparametro where valor = 'PATH'", function (err, rows) {
if (err) {
var message = err.message;
console.log('Erro ' + message);
return res.status(500).send(message);
}else {
var caminhoDiretorio = rows[0].descricao;
var caminhoComSubdiretorio = caminhoDiretorio + path.sep + cpfAluno;
var caminhoCompleto = caminhoComSubdiretorio + path.sep + nomeContrato;
fs.readFile(caminhoCompleto, function(err, arquivo) {
if (err) throw err;
//console.log('Arquivo:' + arquivo);
var data = [];
data.push(arquivo);
data = Buffer.concat(data);
//console.log('Arquivo:' + data);
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=some_file.pdf',
'Content-Length': data.length
});
res.write(data);
res.end(data);
});
}
});
}
浏览器收到响应
响应标题
解决方案
它更容易使用'res.sendFile(),例如:
var filePath = "./dir/example.pdf"
return res.sendFile(filePath);
推荐阅读
- visual-studio-2017 - VS 2017 和 Resharper 颜色
- python - 计算 Numba 中 numpy 数组中非零值的数量
- python - 美丽的汤查找和导航 HTML
- algorithm - 算法混乱
- excel - 在 VBA 中无法通过名称从外部程序传递变体参数
- delphi - 如何将 SQL 查询中的项目添加到 TListView
- angular - Angular 不理解包含 index.html 的 URL#
- lisp - 在 Common Lisp 中构建动态 COND 子句
- javascript - Mongo查询带有日期的json对象
- c# - 是否可以在代码中访问 Visual Studio 构建事件设置?[C#]