Конечно, если у вас есть контроль над 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