Rafael Becker Ответов: 1

Загрузите файл. pdf с веб-сервиса в node.js


Существует внешний веб-сервис, доступ к которому осуществляется непосредственно браузером, который выводит пользователя на веб-страницу, которая обрабатывает запрос в соответствии с параметрами, переданными в url-адресе, а затем возвращает pdf-файл непосредственно в представлении браузера.

Я работаю над приложением, которое призвано сделать вызов этому веб-сервису и вернуть пользователю сгенерированный файл .pdf.

Что я уже пробовал:

Чтобы получить это я попытался использовать пакет request npm следующим образом:
var request = Meteor.npmRequire ( 'request');

request.GET ({
              url: this_nfse.link_nfse, timeout: 1500 jar: true,
              encoding: 'binary'
              }
             , Meteor.bindEnvironment (function (error, response, body) {
                 if (!error && response)
                 {
                 // Handle result according to the application purpose
                 }
            }));


Но объект body, который я получаю, - это html-страница, которая отвечает за запрос pdf-файла, а не файл или представление самого себя.

Я новичок в nodejs/meteor,и любая помощь будет приветствоваться.

1 Ответов

Рейтинг:
0

bilashcse

Можешь попробовать. Я уже работал над этим. Этот пример поможет вам.

var path = require('path');
var mime = require('mime');

app.get('/download', function(req, res){

  var file = __dirname + '/upload-folder/dramaticpenguin.MOV';

  var filename = path.basename(file);
  var mimetype = mime.lookup(file);

  res.setHeader('Content-disposition', 'attachment; filename=' + filename);
  res.setHeader('Content-type', mimetype);

  var filestream = fs.createReadStream(file);
  filestream.pipe(res);
});file);
  filestream.pipe(res);
});




Если вы хотите отправить файл на передний конец для обработки, то вы можете попробовать :

exports.sendPdf = function(req, res) {

  var donneRecu = req.body;

  console.log(donneRecu['lien']);

  var url = donneRecu['lien']; //pdf link

  http.get(url, function(response) {

      var chunks = [];

      response.on('data', function(chunk) {

          console.log('downloading');

          chunks.push(chunk);

      });

      response.on("end", function() {
          console.log('downloaded');
          var jsfile = new Buffer.concat(chunks).toString('base64');
          console.log('converted to base64');
          res.header("Access-Control-Allow-Origin", "*");
          res.header("Access-Control-Allow-Headers", "X-Requested-With");
          res.header('content-type', 'application/pdf');
          res.send(jsfile);
      });
  }).on("error", function() {
      callback(null);
  }); 
}