Скачать PDF nodejs + expressjs - PullRequest
       23

Скачать PDF nodejs + expressjs

0 голосов
/ 08 января 2019

Я делаю 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);
                });

            }

        });
    }

Браузер получает ответ

enter image description here

Заголовок ответа

enter image description here

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Есть причина, по которой вы не можете просто сделать:

var caminhoDiretorio = rows[0].descricao;
var caminhoComSubdiretorio = caminhoDiretorio + path.sep + cpfAluno;
var caminhoCompleto = caminhoComSubdiretorio + path.sep + nomeContrato;

res.download(caminhoCompleto);
0 голосов
/ 08 января 2019

Его проще использовать 'res.sendFile (), что-то вроде:

   var filePath = "./dir/example.pdf"
   return res.sendFile(filePath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...