Как я могу получить MIME-тип из base64 String? - PullRequest
0 голосов
/ 13 июня 2019

Моя строка base64 выглядит как "UklGRkAdEQBXQVZFZm10IBIAAAABAAEAg...".Я пытаюсь загрузить этот файл браузером.Итак,

  1. Я конвертирую его в BLOB-функцию:
      b64toBlob: function(b64Data, sliceSize = 512) {
            let byteCharacters = atob(b64Data);
            let byteArrays = [];
            for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
                let slice = byteCharacters.slice(offset, offset + sliceSize);
                let byteNumbers = new Array(slice.length);
                for (let i = 0; i < slice.length; i++) {
                    byteNumbers[i] = slice.charCodeAt(i);
                }
                let byteArray = new Uint8Array(byteNumbers);
                byteArrays.push(byteArray);
            }
            let blob = new Blob(byteArrays);
            return blob;
        }
Создание URL-адреса из блоба с помощью URL.createObjectURL(this.b64toBlob(base64)) Эмуляция щелчка по тегу <a> с созданным URL-адресом.

Mozilla Firefox распознает тип файла и предлагает загрузить файл справильное расширение, и это хорошо, но Chrome предлагает загрузить TXT-файл независимо от реального типа файла, и это проблема.

Я могу установить тип файла при создании файла BLOB-объекта, и Chrome будет работать правильно, но яНе знаю, как определить правильный MIME-тип из base64.

1 Ответ

0 голосов
/ 13 июня 2019

Прочитайте первый символ вашего base64.

content.charAt(0)

и сохраните регистр коммутатора с указанными ниже значениями, чтобы получить тип

'/': jpg

'i': png

'R': gif

'U': webp

...