#javascript #download #base64
#javascript #Скачать #base64
Вопрос:
Мне нужно загрузить файлы, сохраненные в виде base64
строки. Файл может быть любого типа.
Я попытался сделать window.open(prefix base64);
так, чтобы префикс where был строкой, которую JS Reader генерирует при чтении asDataUrl
. Однако загрузка файла с префиксом data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,
привела к файлу, который не имеет расширения.
Что здесь можно сделать? (Я должен использовать base64 в качестве источника)
Ответ №1:
Вы можете создать <a download>
в JavaScript и щелкнуть по нему, чтобы предложить имя файла:
document.getElementById('download').onclick = () => {
const base64 = ''; // …
const link = document.createElement('a');
link.href = 'data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,' base64;
link.download = 'my-document.docx';
link.click();
};
<button type="button" id="download">Download</button>
Хотя я не знаю, какие браузеры не распознают этот тип носителя как .docx, поэтому, возможно, они также не поддерживают этот download
атрибут.
Комментарии:
1. Где я должен получить
.docx
расширение и т. Д.?2. @Sergey: Вы имеете в виду, что это не всегда .docx? Префикс также меняется?
3. Как я уже упоминал в первой строке моего вопроса, это может быть любой файл любого типа. Это основная проблема.
4. @Sergey: Вообще не может быть сделано. Вы можете дополнить браузер собственным отображением типов в расширения, но нет способа преобразовать одно в другое без сопоставления (иначе браузер уже делал бы это).