Попытка загрузить PDF-файл и задать имя файла с помощью express

#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. можете ли вы попробовать удалить двойные кавычки из имени файла