前端文件流处理:Blob、File、ArrayBuffer 与 FormData 的 4 种转换场景详解

前端开发文件处理BlobFormData
于 2026-07-07 09:59:52 修改
·本内容遵循CC 4.0 BY-SA版权协议

前端文件流处理:Blob、File、ArrayBuffer 与 FormData 的 4 种转换场景详解

在现代前端开发中,文件处理是一个无法绕开的核心话题。无论是图片上传、大文件分片传输,还是二进制数据解析,都离不开对 Blob、File、ArrayBuffer 和 FormData 这四种关键对象的深入理解。本文将带你深入剖析这些对象之间的转换关系,并通过实际代码示例展示它们在前端开发中的典型应用场景。

1. 核心对象解析与技术选型

1.1 二进制对象家族

Blob (Binary Large Object) 是前端处理二进制数据的基石对象,它具有以下关键特性:

  • size 属性表示数据大小(字节)
  • type 属性表示 MIME 类型
  • 可通过 slice() 方法进行分片处理
JAVASCRIPT
const blob = new Blob(['Hello World'], { type: 'text/plain' });
console.log(blob.size); // 11
console.log(blob.type); // "text/plain"

File 对象继承自 Blob,是用户文件在浏览器中的抽象表示:

  • 除了继承 Blob 的属性外,还包含文件名、最后修改时间等信息
  • 通常通过 <input type="file"> 获取
JAVASCRIPT
// 通过input获取的File对象示例
const fileInput = document.querySelector('input[type="file"]');
const file = fileInput.files[0];
console.log(file.name); // 文件名

ArrayBuffer 是固定长度的原始二进制数据缓冲区:

  • 不能直接操作,需要通过类型化数组(如 Uint8Array)或 DataView 操作
  • 适合处理纯二进制数据
JAVASCRIPT
const buffer = new ArrayBuffer(16); // 创建16字节缓冲区
const view = new Uint8Array(buffer); // 创建视图

FormData 是专门为表单数据设计的数据结构:

  • 支持文本和文件数据的混合传输
  • 自动设置 multipart/form-data 的 Content-Type

1.2 技术选型决策矩阵

使用场景 推荐对象 优势说明
文件分片上传 Blob + FormData 支持大文件切片,兼容性好
二进制数据处理 ArrayBuffer 底层操作,性能最优
表单文件上传 File + FormData 标准表单提交方式
内存敏感操作 Blob 可释放内存,避免OOM

2. 实战转换场景详解

2.1 File 转 Base64 预览

图片预览是文件上传的常见需求,核心是通过 FileReader 将 File

最低 0.47元/天 开通会员,解锁全文
left
成为会员后, 你将解锁
right
benefits 下载资源随意下
benefits 优质VIP博文免费学
benefits 优质文库回答免费看
benefits 付费资源9折优惠