Некорректное имя скачиваемого файла

Вводные условия таковы: По нажатию на контрол открываем в новой вкладке браузера файл. Файл передаем в виде Stream. Вкладку (через клиент) открываем с помощью window.open(fileUrl, "blank"); , где fileUrl = window.URL.createObjectURL(file);, а в свою очередь file - данные типа Blob возвращаемые с сервера (тот самый Stream).

Что имеем в итоге: требуемый файл открывается в новой вкладке и все вроде бы ровно, но только до того момента как мы его пытаемся его скачать. В зависимости от браузера имя скачиваемого файла или "document.pdf" или "BLOB-xxx-...-xxx.pdf", а надо бы "Имя_файла.pdf".

Для ответа, выдаваемого сервером проставляется Content-Disposition: "attachment"; filename="Имя_файла.pdf".

Вопрос: каким образом можно сделать так, чтобы скачиваемый документ имел корректное имя?


Ответы (1 шт):

Автор решения: Иван Козлов

В итоге, часть моих проблем решилась, когда я изменил код получения URL новой вкладки.

Изначально было так:

const file = new Blob([data], { type: mimeType ? mimeType : undefined });
return window.URL.createObjectURL(file);

После изменений стало так:

const file = new File([data], filename, { type: mimeType ? mimeType : undefined });
return window.URL.createObjectURL(file);

Теперь, при работе в Firefox все корректно сохраняется. Но пока совершенно не хочет решаться проблема с Google Chrome. В этом браузере по-прежнему при сохранении отображается идентификатор BLOB.

→ Ссылка