javascript — элемент не распознает расширение файла автоматически при загрузке файла

В настоящее время я разрабатываю приложение, в котором пользователь нажимает на элемент, этот элемент вызывает функцию JS, а функция обрабатывает загрузку файла.

Файлы представляют собой отчеты, сгенерированные динамически модулем Devexpress XtraReports , преобразованные в Base64 и затем отправленные обратно на сторону клиента. Когда клиент получает строку Base64, функция JS создает элемент {amp}lt;a{amp}gt; , устанавливает атрибут href в data:application/pdf;base64,JVBERi0xLjQNCiWio[...] и имитирует щелчок с событием click() .

Вот фрагмент кода JS, который обрабатывает загрузку файла:

 let downloadLink; try { downloadLink = executionId ? await getLinkPdfBase64(executionId) : false; } catch (error) { downloadLink = false; console.log(error); } if (downloadLink) { const aElement = document.createElement("a"); downloadLink = "data:application/pdf;base64,"   downloadLink; aElement.setAttribute("download", currentReportData.LayoutName); aElement.setAttribute("href", downloadLink); aElement.click(); aElement.remove(); } else { DevExpress.ui.dialog.alert( //Ignore this, it's a Devexpress component "Your report could not be generated", "Alert" ); } 

Проблема в:

Когда я генерирую отчет с пользовательскими типами параметров, Devexpress генерирует его правильно (Base64, если преобразован в строку, визуально правильно сформирован), но браузер (Google Chrome) загружает файл с расширением «.0» . Если отчет имеет нормальные параметры Devexpress (например, Strings, Int32, Guids и т. Д.)), Файл загружается с правильным расширением «.pdf» .

Вот изображение правильно загруженного файла PDF и файла расширения «.0»:

Пример ошибки изображения

Может ли это быть функция JS, причина или решение проблемы? Если нет, то почти наверняка что-то не так с генератором отчетов (Devexpress).

NB. Если я вручную изменю расширение «.0» на «.pdf», файл откроется, и он будет отображен / сформирован правильно.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector