Express res.download () не отправляет правильный URL-адрес клиенту - PullRequest
0 голосов
/ 05 апреля 2020

Я хочу использовать res.download () для загрузки определенных файлов с сервера, однако, когда я запускаю res.download, клиент не получает правильный URL-адрес. Загружаемые файлы находятся в каталоге, который был установлен статически.

Вот мой соответствующий код бэкэнда:

app.get("/downloadfile", function(req,res){
    var file = req.query.file;
    var currentpath = req.query.currentpath;
    console.log("SENDING FILE: " + file + " at: " + currentpath);
    //file = file.substring(20, file.length)
    console.log(file);
    console.log(currentpath + "/" + file);
    res.download(currentpath + "/" + file, file);
})

Вот вывод терминала, когда я запускаю этот раздел кода:

SENDING FILE: Matthew Haywood CV.pdf at: /media/pi/ELEMENTS B//Matt Haywood/Uni Work
Matthew Haywood CV.pdf
/media/pi/ELEMENTS B//Matt Haywood/Uni Work/Matthew Haywood CV.pdf

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

Это что Safari возвращает при запуске этого маршрута:

enter image description here

Почему res.download напрямую указывает на /path_to_file/your_file.pdf/ вместо server / path_to_file / your_file.pdf?

Когда я go на URL-адрес вручную, файл загружается без проблем, но при использовании res.download () он переходит на неправильный URL-адрес.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Мне удалось заставить его работать, добавив на стороне клиента:

window.location = "http://" + window.location.host + link;

в вызове AJAX.

0 голосов
/ 05 апреля 2020

Вам необходимо добавить заголовок местоположения:

res.set({
    'Location': "url"
});
res.download(currentpath + "/" + file, file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...