Загрузите файл из облачного хранилища Google прямо на клиент в nodejs - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу иметь возможность отправлять файл, загруженный из облака Google, непосредственно клиенту, и мне не нужно сначала сохранять его на моем сервере, а затем создавать загрузку для клиента из сохраненной версии на моем сервере, поскольку это замедляет процесс, поскольку файл загружается два раза, сначала из облака Google на мой собственный сервер, а затем с моего собственного сервера на клиент.

router.get("/:filename", async(req, res) => {
  try {
    // Grab filename from request parameter
    const fetchURL =req.params.filename;
    const file = await File.findOne({fetchURL});
    const srcFileName = file.originalname;
  // Call GCS with bucketName and check the file method with srcFileName and check again with download method which takes download path as argument
    storage
      .bucket(bucketName)
      .file(srcFileName)
      .download({
        destination: path.join(process.cwd(), "downloads", srcFileName)
      })
      .then(() =>
        res.download(path.join(process.cwd(), "downloads", srcFileName), err =>
          err ? console.log(err) : null
        )
      )
      .catch(err =>res.status(400).json({
        message: err.message
      }));
  } catch (err) {
    res.status(res.statusCode).json({
      message: `There was an error downloading your file. ${err.message}`
    });
  }
});

...