Некорректное имя скачиваемого файла
Вводные условия таковы: По нажатию на контрол открываем в новой вкладке браузера файл. Файл передаем в виде 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.