Blob和File

308 阅读1分钟

image.png

Blob、File和ArrayBuffer的区别和联系

对象区别联系
File特殊类型的Blob对象,代表一个文件是Blob对象的子类,拥有文件相关属性和方法
Blob二进制大对象,表示不可变的原始数据可以通过File、XHR等方式创建;可以使用slice方法截取部分数据
ArrayBuffer低级别的数据结构,存储二进制数据可以通过Blob对象获取其二进制数据

属性和方法

对象属性方法
Filename, size, type, lastModifiedslice(), arrayBuffer()
Blobsize, typeslice(), arrayBuffer(), stream(), text(), blob()
ArrayBufferbyteLength-

相关联的API

这些属性和方法可用于处理文件上传、下载、读取、写入等操作,以及与服务器进行交互时的文件处理任务。

API属性方法
FileReader-readAsText()(读取为文本)、readAsArrayBuffer()(读取为ArrayBuffer)、readAsDataURL()(读取为Data URL)、abort()(中止)
XMLHttpRequestresponseType(响应类型)send()(发送请求)、onreadystatechange(状态变化事件)
URL-createObjectURL()(创建URL)、revokeObjectURL()(释放URL)
FormData-append()(添加字段)
FileWriter-write()(写入数据)、seek()(移动指针位置)、truncate()(截断文件)、abort()(中止)

日常使用场景

  1. 二进制流转为base64

    1. btoa()函数

    2. TextEncoder - 适用于处理大型二进制数据,特别是在浏览器环境中

    3. Uint8Array - 适用于处理大型二进制数据,特别是在浏览器环境中

      1. // 假设binaryData是二进制流的数组或Uint8Array对象
        const binaryData = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f]); // 示例二进制数据:Hello
        
        // 使用TextEncoder将二进制流转换为Base64编码
        const textEncoder = new TextEncoder();
        const base64Data = btoa(String.fromCharCode.apply(null, textEncoder.encode(binaryData)));
        
        console.log(base64Data); // 输出:SGVsbG8=
        
    4. Buffer对象(Node.js)- 使用Buffer.from(binaryData).toString('base64')将二进制数据转换为Base64编码