FormData 参考
FormData 用于构造表单数据,常见于文件上传、表单提交和 multipart/form-data 请求。它可以直接从 <form> 元素创建,也可以手动追加字段。
语法
const formData = new FormData(form);
formData.append("name", "caijiao");
常用方法
| 方法 | 说明 |
|---|---|
append(name, value) |
追加字段,允许同名多值 |
set(name, value) |
设置字段,会覆盖同名旧值 |
get(name) |
读取第一个字段值 |
getAll(name) |
读取全部同名字段值 |
delete(name) |
删除字段 |
entries() |
遍历字段键值对 |
返回值
FormData 本身是可迭代对象。字段值可能是字符串,也可能是 File。
示例
const form = document.querySelector("form");
const formData = new FormData(form);
formData.append("source", "web");
await fetch("/api/upload", {
method: "POST",
body: formData,
});
使用要点
- 上传文件时不要手动设置
Content-Type,浏览器会自动带上 multipart boundary。 - 用
Object.fromEntries(formData)转对象只适合普通文本字段,文件字段要单独判断。 - 同名字段可能有多个值,例如多选框和多文件上传。
常见错误
- 手动设置
Content-Type: multipart/form-data导致 boundary 缺失,服务端无法解析。 - 把
File当字符串处理,导致文件上传逻辑丢失。 - 使用
get()读取多选字段,只拿到第一个值。
相关内容
相关内容
- Blob 参考 Blob Reference,整理 Blob 构造函数、type、size、text、arrayBuffer、对象 URL、文件下载演示和常见错误。
- Clipboard API 参考 Clipboard API Reference,整理 navigator.clipboard.writeText 的语法、权限限制、可运行演示、常见错误和相关问...
- URL API 参考 URL API Reference,整理 URL 构造函数、常用属性、查询参数处理、对象 URL、示例和常见错误。
- URLSearchParams 参考 URLSearchParams Reference,整理查询参数读取、追加、修改、删除、序列化、可运行演示和常见错误。
- Web Crypto API 参考 Web Crypto API Reference,整理 crypto.randomUUID、crypto.subtle.digest、SHA 哈希、HTTPS...
- Web Storage 参考 Web Storage Reference,整理 localStorage、sessionStorage、setItem、getItem、removeItem、...