У меня есть основной express маршрут, по которому после перехода следует запросить загрузку указанного файла в res.download:
app.get('/download/:fileid', (req, res) => {
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'filesystem'
});
connection.connect(() => {
console.log("Connection to database established");
});
connection.query(`SELECT * from files where fileid = '${req.params.fileid}'`, (error, results, fields) => {
if (error) throw error;
else if(results.length === 0){
console.log("empty");
}
else{
res.download(`./uploads/PFSk5x7bg.png`, 'PFSk5x7bg.png', (err) => {
console.log(err);
})
}
});
connection.end();
})
Однако при обращении к нему просто отображается изображение на веб-страницы, и когда я проверяю заголовки ответа, отсутствует заголовок расположения содержимого. Я попытался вручную установить его с помощью res.setheader, но все равно не работает.
Я попытался создать другой маршрут только для тестирования:
app.get('/test', (req, res) => {
res.download(`./uploads/PFSk5x7bg.png`, 'PFSk5x7bg.png', (err) => {
console.log(err);
})
})
, и он работает .... содержимое есть заголовок расположения, браузер фактически загружает файл.
Кто-нибудь может понять, что я делаю неправильно с моим маршрутом / загрузки?
*** ОБНОВЛЕНИЕ: Я изменил имя маршрут / download /: fileid к / test /: fileid и все заработало. Затем я изменил его НАЗАД на / download /: fileid, и теперь он работает ... Кто-нибудь знает, что могло вызвать это?