Blob
Blob 全称为 binary large object ,即二进制大对象。blob对象本质上是js中的一个对象,里面可以储存大量的二进制编码格式的数据。Blob 对象一个不可修改,从Blob中读取内容的唯一方法是使用 FileReader。
1. 实例属性和方法
1 | // 属性 |
2、创建
1 | // type:默认值为 '',表示将会被放入到 blob 中的数组内容的 MIME 类型 |

3、读取
1 | const reader = new FileReader(); |
File
File 对象是特殊类型的 Blob
在 JavaScript 中,主要有两种方法来获取 File 对象:
- 1)<input> 元素上选择文件后返回的 FileList 对象;
- 2)文件拖放操作生成的 DataTransfer 对象;
1 | /* |
FileReader
通过上面我都知道了blob是不可修改也是无法读取里面的内容的。无法读取里面的内容肯定是不可行的。所以Filereader就提供了读取blob里面内容的方法。
FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,
使用 File 或 Blob 对象指定要读取的文件或数据。
1、实例属性和方法
1 | let reader = new FileReader(); |
2、将文件读取为base64
1 | <input type="file" name="" id="fileId"> |
3、将blob对象读出来
1 | <script> |
ArrayBuffer
ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。
它是一个字节数组,通常在其他语言中称为“byte array”。
你不能直接操作 ArrayBuffer 的内容,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。

1、创建buffer
1 | const buffer = new ArrayBuffer(8); |
2、TypedArray读写buffer
1 | let buffer = new ArrayBuffer(8); |
3、DataView读写buffer
1 | let buffer = new ArrayBuffer(8); |
Object URL
它是一个用来表示File Object 或Blob Object 的URL1
2
3
4
5
6
7
8
9<input type="file" name="" id="fileId">
<script>
let file = document.getElementById("fileId");
file.onchange = function(e){
let file = e.target.files[0];
console.log(URL.createObjectURL(file))
// blob:http://127.0.0.1:5500/57c6bf38-c83c-4f1b-a936-da9bf00d9ecf
}
</script>
base64
在 JavaScript 中,有两个函数被分别用来处理解码和编码 base64 字符串:
- btoa():编码,从一个字符串或者二进制数据编码一个 Base64 字符串;
- atob():解码,解码一个 Base64 字符串。
1 | btoa('java') // 编码 'amF2YQ==' |
使用场景
- 将canvas画布内容生成base64的图片;
- 将获取的图片文件,生成base64图片。
Blob与其他类型关系
