Как загрузить двоичный файл, используя expressjs, без использования пути к файлу? - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь загрузить двоичные данные, полученные из кеша Redis, в настоящее время это zip-файл. Я хотел использовать res.download () из expressjs, но мне нужен путь к файлу, которого у меня нет.

Кроме того, мне нужно знать, файл правильно загружен, чтобы недействительный кеш.

У кого-нибудь есть хорошее решение? Заранее спасибо

Лучшее решение для меня будет примерно таким: (Но у меня нет пути !!)

router.get("/:id", async (req, res) => {
  const file = await getFileFromRedis(req.params.id); //file is a binary here
  const filename = `${req.params.id}.zip`;
  res.download(file, filename, function(err) {
    if (err) {
      res.status(400).send();
    } else {
      deleteFileFromRedis(req.params.id);
      res.status(200).send();
    }
  });
});

Также я уже пробовал что-то вроде следующего, но похоже, мой файл поврежден после загрузки:

router.get("/:id", async (req, res) => {
  const file = await getFileFromRedis(req.params.id); //file is a binary here
  const filename = `${req.params.id}.zip`;
  res.setHeader('Content-Length', file.length);
  res.setHeader('Content-Type', 'application/zip');
  res.setHeader('Content-Disposition', `attachment; filename=${filename}`);
  res.write(file, 'binary');
  res.end();
});
...