Загрузить файл, сохраненный как base64

#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: Вообще не может быть сделано. Вы можете дополнить браузер собственным отображением типов в расширения, но нет способа преобразовать одно в другое без сопоставления (иначе браузер уже делал бы это).