#reactjs #express
#reactjs #экспресс
Вопрос:
Я пытаюсь использовать content-disposition для принудительной загрузки PDF-файла и установки имени файла, которое не работает. На сетевой панели я вижу, что заголовки установлены правильно, но PDF открывается в браузере вместо загрузки, а имя файла неверно и представляет собой просто случайный набор символов. Я чего-то не понимаю? Я пробовал как в Chrome, так и в Firefox с тем же результатом, где оба показывают правильные заголовки на вкладке сеть, но PDF отображается только в браузере.
res.on('end', function() {
const body = Buffer.concat(chunks);
response.setHeader('Content-Length', body.length);
response.setHeader('Content-Type', 'application/pdf');
response.setHeader(
'Content-Disposition',
'attachment; filename="Report.pdf"',
);
response.send(body);
});
Комментарии:
1. setHeader — это собственный метод node.js , если ваш сервер является экспресс-сервером, попробуйте использовать метод экспресс-набора. или попробуйте npmjs.com/package/content-disposition
2. Существует также встроенный res.attachment, который вы можете использовать expressjs.com/en/api.html#res.attachment
3. Просто попробовал использовать set вместо setHeader и получил тот же результат. Заголовки по-прежнему отображаются на вкладке сеть правильно, но загрузка или имя файла отсутствуют.
4. Я наткнулся на res.attachment во время исследования этого, но это для файлов, сохраненных в локальной файловой системе сервера, а не в буфере.
5. можете ли вы попробовать удалить двойные кавычки из имени файла