Google Chrome не позволяет задать имя скачиваемому файлу

Общая ситуация такова: после клика на ссылку в новой вкладке браузера открывается окошко с файлом, который позже скачивают стандартными браузерными downloader'ами. Реализация основных моментов:

Получение URL файла:

public getFileObjectUrl = async (route: string, filename: string): Promise<string> => {
    const data = await this.get<any>(route, { asBlob: true });

    const extension = filename.split('.').pop();
    const mimeType = extension === "csv" ? "text/plain" : lookup(filename); 
    // в этом конструкторе вторым параметром как раз и передается имя файла
    const file = new File([data], filename, { type: mimeType ? mimeType : undefined }); 
    return window.URL.createObjectURL(file);
}

Непосредственно открытие вкладки:

const onOpenDocument = async (document: AttachedDocumentModel) => {
    const fileUrl = await Server.getFileObjectUrl(documentUrl(document.Id), document.Name);
    window.open(fileUrl, "blank");
}

Метод documentUrl() возвращает путь к соответствующему контроллеру.

В браузере Firefox данный метод работает. При скачивании мы получаем файл с тем именем, под которым он был сохранен в БД. В Chrome же получаем сгенерированное имя BLOB-объекта.

На сервере для данного файла проставляется атрибут Content-Disposition: "attachment"; filename="Имя_файла.pdf".

Вопрос: в чем может быть причина подобной привередливости Chrome?


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