BLOB
Blob 是一种 JavaScript 数据类型,表示了不可变的二进制数据(即二进制大对象)。Blob 可以存储各种类型的数据,例如文本、图像、音频等等。
Blob 对象包含三个属性:size、type 和 slice()。size 属性表示 Blob 对象的数据大小(单位是字节),type 属性表示 Blob 对象的 MIME 类型,而 slice() 方法则用于将 Blob 对象截取一部分作为新的 Blob 对象返回,从而方便实现分块上传或下载等操作。
Blob 对象通常是通过使用 XMLHttpRequest 或 Fetch API 来获取服务器端的二进制数据并进行处理。在处理完数据后,可以将其保存到本地,或者上传到服务器端进行后续的处理。
Blob 对象在前端开发中非常常见,例如用于文件上传、音视频处理、图片压缩等等。
MIME(Multipurpose Internet Mail Extensions)类型是指在HTTP协议等Internet协议中定义的用来标识互联网上各种文件格式的格式描述符。
常见的 MIME 类型包括:
- text/html : HTML文本格式
- text/plain : 普通的纯文本格式
- text/css : CSS样式表格式
- application/javascript : JavaScript 格式
- image/jpeg : JPEG 图片格式
- image/png : PNG 图片格式
- image/gif : GIF 图片格式
- audio/mpeg : MP3 音频格式
- video/mp4 : MP4 视频格式
- application/pdf : PDF 文件格式
- application/msword : Word文档格式
- application/vnd.ms-excel : Excel 文档格式
- application/vnd.openxmlformats-officedocument.wordprocessingml.document : Word文档格式
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet : Excel 文档格式
MIME 类型通常由两部分组成,第一部分为类型(type),第二部分为子类型(subtype),两者之间用 / 分隔。例如:image/jpeg。有些 MIME 类型可以指定参数信息,参数信息通过在 MIME 类型后添加 ; 号及参数名称和参数值组成,例如 image/jpeg;quality=20。
Blob 和 File 都是 JavaScript 中用来处理二进制数据的类型,但它们有以下不同点:
-
文件名:File 对象除了具有 Blob 的属性外,还有一个名为“name”的属性,用于表示文件的名称。
-
文件类型:File 对象除了具有 Blob 的属性外,还有一个名为“type”的属性,表示文件的 MIME 类型。
-
来源:Blob 对象可以是从任意来源获取的(例如通过 xMLHttpRequest 下载或 canvas.toBlob() 生成),而 File 对象通常是来自用户在表单中选择上传的文件。
综上所述,我们可以使用 Blob 对象来处理任意二进制数据,而使用 File 对象来处理具有文件名和类型的二进制数据,例如上传和下载文件等。