首页 > 解决方案 > 下载 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);
                });

            }

        });
    }

浏览器收到响应

在此处输入图像描述

响应标题

在此处输入图像描述

标签: node.jsexpress

解决方案


它更容易使用'res.sendFile(),例如:

   var filePath = "./dir/example.pdf"
   return res.sendFile(filePath);

推荐阅读