Как скачать файл в браузере прямо со стороны узла node.js без какой-либо переменной? - PullRequest
0 голосов
/ 16 апреля 2019

Мое приложение создано с означает , и я тоже пользователь Docker. Цель моего приложения - создать и загрузить файл CSV. Я уже создал свой файл, сжал его и поместил во временную папку (файл будет удален после загрузки). Эта часть находится на стороне сервера nodejs и работает без проблем.

Я уже использую несколько вещей, таких как (res.download), которые должны загружать файл непосредственно в браузере, но ничего не добавляются. Я пытался использовать blob в angularjs, но он не работает.

Функция getData создает и сжимает файл (он существует, я могу получить к нему доступ непосредственно, когда смотрю, где сохранено приложение).

exports.getData = function getData(req, res, next){
  var listRequest = req.body.params.listURL;
  var stringTags = req.body.params.tagString;
  //The name of the compressed CSV file
  var nameFile = req.body.params.fileName;
  var query = url.parse(req.url, true).query;
  //The function which create the file
  ApollineData.getData(listRequest, stringTags, nameFile)
    .then(function (response){
      var filePath = '/opt/mean.js/modules/apolline/client/CSVDownload/'+response;
      const file = fs.createReadStream(filePath);
      res.download(filePath, response);
    })
    .catch(function (response){
      console.log(response);
    });
};

Моя основная проблема заключается в том, чтобы загрузить этот файл непосредственно в браузере без использования какой-либо переменной, поскольку он может быть огромным (например, несколько ГБ). Я хочу скачать его, а затем удалить.

1 Ответ

0 голосов
/ 13 июня 2019

В res.download

нет ничего плохого. Вероятно, причина, по которой res.download не работает для вас, заключается в том, что вы используете AJAX для получения ресурса. Выполните обычную навигацию.Или, если для этого требуются некоторые почтовые данные и другой метод: создайте форму и отправьте.

...