Загрузить файл с сервера (Nodejs Express> React) - PullRequest
0 голосов
/ 25 октября 2018

как я могу отправить файл (docx) пользователю?это код моего сервера:

  app.get('/api/topic/file/:id', function (req, res, next) {
    Topic.findByIdAndUpdate(req.params.id)
      .exec()
      .then((topic) => {
        let filepath = topic.news_file[0]
        console.log('filepath', filepath)
        res.download(filepath, topic.name + '.docx', function (err) {
          if (err) {
            console.log('api get file err ', err);
          } else {
            // decrement a download credit, etc.
          }
        });
      }).catch((err) => console.log('error', err));
  })

это не вызывает загрузку в браузере.я использую реагировать как фронтэнд.на клиенте у меня есть кнопка, вызывающая это при нажатии:

handleDownload() {
        if (this.state.lastClicked) {
          fetch("/api/topic/file/" + this.state.lastClicked._id)
            .then(results => {
              console.log('results', results)
              return results;
            })
        } else {
            //somthings...
        }
      }

1 Ответ

0 голосов
/ 25 октября 2018

Нашел решение, используя downloadjs ..

var download = require("downloadjs")
 async handleDownload() {
    const res = await fetch("/api/topic/file/" + this.state.lastClicked._id);
    const blob = res.blob();
    download(blob, this.state.lastClicked.name + '.docx');
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...