res.download в node.js не переименовывает файл в Chrome - PullRequest
0 голосов
/ 27 января 2020

Согласно документации express 4.x , мы должны иметь возможность переименовать файл, прежде чем он будет представлен пользователю в браузере, следующим образом: res.download ( path, requiredName)

В моем коде у меня есть это, чтобы попытаться увидеть, что произошло:

res.download(fpath, "hello.jpg");

И когда я пытаюсь загрузить файл в Chrome, я получаю «хэшированное» имя файла, поскольку я сохраняю его в файловой системе, чтобы избежать столкновений с тем же именем, посмотрите на изображения:

enter image description here

Но в Microsoft Excel (вариант без хрома) я получаю имя файла:

enter image description here

Что мне делать заставить chrome принять предполагаемое имя файла вместо сохранения имени в пути к файлу?

router.get("/downloadfile/", ensureAuthenticated, async (req, res) => {
  try {
    let fileId = req.query.id;
    let fileInfo = await axios.get(
      `http://localhost:5000/api/files/getfile/${fileId}/`
    );
    let fpath =
      __dirname +
      "/../public/ficheiros/" +
      fileInfo.data.userAt +
      "/" +
      fileInfo.data.name;
    res.download(fpath, "hello.jpg");
  } catch (error) {
    res.jsonp(error.response.data);
  }
});

РЕДАКТИРОВАТЬ: Вот как я называю загрузку, на внешней стороне:

  if (f.mimetype == "image/png" || f.mimetype == "image/jpeg") {
    var ficheiro = $('<img src="' + f.path + '" width="80%"/>');
  } else var ficheiro = $("<p>" + f.originalname + "</p>");
  var download = $(
    '<div><a href="/posts/downloadfile/?path=' +
      f.path +
      "&id=" +
      f._id +
      '">Download</a></div>'
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...