Javascript 将 blob 转换为字符串并返回

标签 javascript filereader

我可以使用 FileReader 将 blob 转换为字符串,但我想将其转换回来:

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 无效。

最佳答案

来源:Creating a Blob from a base64 string in JavaScript 此方法正确地将 base64 数据转换回原始二进制数据。 为了提高性能,数据以 sliceSize 大小的 block 为单位进行处理。 注意:源代码在 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;
    }

关于Javascript 将 blob 转换为字符串并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36301315/

相关文章:

javascript - 动态创建javascript数组,其名称在java脚本字符串中

javascript - Jasmine spy 没有找到属性(property)

javascript - 使用 Promise 将 HTML5 FileReader 的结果捕获到变量

Java Swing JTextArea 和 BufferedReader

java - 从图中的文本文件读取节点数

javascript - 客户端收到 "Location"HTTP header 后如何处理 JavaScript?

javascript - Mongoose findOne.populate 范围问题

javascript - for循环计数器可以在ES2015中声明为const吗?

javascript - FileReader readAsArrayBuffer() 与本地 mp3 文件

javascript - 如何为 FileReader 编写回调?