Конечно, если у вас есть контроль над URL, вы можете легко установить имя файла PDF, изменив URL.

м приложении Vue я получаю PDF-файл в виде большого двоичного объекта и хочу отобразить его с помощью обозревателя PDF в браузере.

Я конвертирую его в файл и генерирую URL объекта:

const blobFile = new File([blob], `my-file-name.pdf`, { type: 'application/pdf' })
this.invoiceUrl = window.URL.createObjectURL(blobFile)

Затем я отображаю его, устанавливая этот URL какdata атрибут элемента объекта.

<object
  :data="invoiceUrl"
  type="application/pdf"
  width="100%"
  style="height: 100vh;">
</object>

Затем браузер отображает PDF, используя программу просмотра PDF. Однако в Chrome имя файла, которое я предоставляю (здесь my-file-name.pdf), не используется: я вижу хеш в строке заголовка средства просмотра PDF, и когда я загружаю файл, нажимая правой кнопкой мыши -> Сохранить как ... 'или элементы управления зрителя, он сохраняет файл с хэшем большого двоичного объекта (cda675a6-10af-42f3-aa68-8795aa8c377d или похожие).

Зритель и имя файла работают так, как я надеялся в Firefox; это только Chrome, в котором имя файла не используется.

Есть ли способ, используя нативный Javascript (включая ES6, но без сторонних зависимостей, кроме Vue), задать имя файла для элемента blob / object в Chrome?

[edit] Если это помогает, ответ имеет следующие соответствующие заголовки:

Content-Type: application/pdf; charset=utf-8
Transfer-Encoding: chunked
Content-Disposition: attachment; filename*=utf-8''Invoice%2016246.pdf;
Content-Description: File Transfer
Content-Encoding: gzip

Ответы на вопрос(3)

Ваш ответ на вопрос