Метод загрузки узла выдает пустой файл - PullRequest
0 голосов
/ 04 марта 2019

Чтобы попрактиковаться в моем узле, я пытаюсь сделать загрузчик файлов.Цель состоит в том, чтобы получить URL-адрес файла из базы данных (в настоящее время mp3), загрузить его в проект и использовать его в качестве href на стороне клиента.

Мне удалось заставить работать обещания и загрузить файл, однако файл говорит, что он пуст, но когда я вхожу в проект, я могу нормально открыть файл (mp3).

Вот что у меня есть:

    .then(() => {
        Promise.resolve()
          .then(() => {
            return new Promise(resolve => {
              console.log("Started download");

              // req.body.total_source is the full url of the file
              console.log(req.body.total_source);

              setTimeout(() => {
                download(req.body.total_source, "dist").then(() => {
                  console.log("downloaded!");
                  resolve();
                });
              }, 1000);
            });
          })
          .then(() => {
            console.log("success page rendered");
            res.render("success", {

              // only get file name from url
              song_link: req.body.total_source.substring(
                req.body.total_source.lastIndexOf("/") + 1,
                req.body.total_source.length
              ),

              song_source: req.body.total_source,
              name: req.body.name
            });
          });
      })

И кнопка настроена (используя ejs):

<a href="/dist/<%= song_link %>"  download>Download <%= name %></a>

Может кто-нибудь указать мне правильное направление?Все файлы console.logs показывают, что загрузка завершена до отображения страницы успеха, поэтому я не уверен, почему она говорит: «Ошибка - пустой файл».

1 Ответ

0 голосов
/ 04 марта 2019

ИСПРАВЛЕНО: Я думаю, что проблема заключалась в том, что я сохранял файл в папке dist, когда я настроил проект для использования клиентских ресурсов из «публичной» папки.При сохранении файлов в "/ public / assets" исправлена ​​проблема:

download(req.body.total_source, "public/assets");
...