Javascript преобразование blob в строку и обратно

Я могу преобразовать blob в string с помощью FileReader, но я хочу преобразовать его обратно:

var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
   base64data = reader.result;
   var blobToSend = base64data.substr(base64data.indexOf(',')+1);
   rtcMultiConnection.send({"command":{
       "recording":blobToSend,
       "type":blob.type,
       "size":blob.size
   }});
}

Это отправляется с https://github.com/muaz-khan/RTCMultiConnection но главный вопрос заключается в том, как восстановить blob после отправки. К сожалению, отправка blob as не сработала.

1 ответов


источник: создание Blob из строки base64 в JavaScript Этот метод правильно преобразует данные base64 обратно в исходные двоичные данные. Ради улучшения производительности, данные обрабатываются блоками по размеру sliceSize. Примечание: источник находится в TypeScript

    public static Base64ToBlob(b64Data, contentType = "", sliceSize = 512): Blob
    {
        const byteCharacters = atob(b64Data);
        const byteArrays = [];

        for (let offset = 0; offset < byteCharacters.length; offset += sliceSize)
        {
            const slice = byteCharacters.slice(offset, offset + sliceSize);
            const byteNumbers = new Array(slice.length);

            for (let i = 0; i < slice.length; i++)
            {
                byteNumbers[i] = slice.charCodeAt(i);
            }

            const byteArray = new Uint8Array(byteNumbers);
            byteArrays.push(byteArray);
        }

        const blob = new Blob(byteArrays, { type: contentType });
        return blob;
    }