Получение zip-файлов из потока GridFS в React - PullRequest
0 голосов
/ 16 сентября 2018

Я настроил поток GridFS, который обслуживает zip-файлы, если я ввожу URL-адрес API в браузере, zip-файл загружается на мой компьютер, что я и хочу сделать.Однако, когда я делаю запрос на получение из внешнего приложения React, я возвращаю объект данных без эффекта загрузки.Я смог заставить загрузку работать, используя window.location.href, но я предполагаю, что это будет проблемой в работе, учитывая, что URL больше не действителен.Я просто хочу получить представление об этом, и моя цель состоит в том, чтобы пользователь мог щелкнуть кнопку загрузки, и почтовый файл отправляется пользователю и начинается загрузка.Спасибо !!

GRIDFS API ROUTE

router.get("/api/test/stream/:filename", (req, res) => {
res.set({
  "Accept-Ranges": "bytes"
});
gfs.files.findOne({ filename: req.params.filename }, (err, file) => {
  if (!file || file.length === 0) {
    return res.status(404).json({
      error: "That File Doesn't Exist"
    });
  }
  if (file.contentType === "application/zip") {
    // Read output to browser
    const readstream = gfs.createReadStream(file.filename);
    readstream.pipe(res);
  } else {
    res.status(404).json({
      error: "This is not an zip file"
    });
  }
});
 });

REACT BUTTON
<a style={{width: '100%', display: 'flex', justifyContent: 'center'}} onClick={() => window.location.href="http://localhost:8080/api/test/stream/47c45dccd515a0f77d1a3ca738d7eecd.zip"}>
        <Button onClick={this.closeSampleModal}>
            Get My Download
        </Button>
...