FormData.set()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

备注: 此特性在 Web Worker 中可用。

set() 方法会对 FormData 对象里的某个 key 设置一个新的值,如果该 key 不存在,则添加。

set()FormData.append 不同之处在于:如果某个 key 已经存在,set() 会直接覆盖所有该 key 对应的值,而 FormData.append 则是在该 key 的最后位置再追加一个值。

语法

该方法有两种使用方式,一个是传入两个参数,一个是传入三个参数。

js
formData.set(name, value);
formData.set(name, value, filename);

参数

name

字段名称。

value

字段的值,该值可以是一个 USVStringBlob(包括其子类,例如 File),如果不是这两个指定的类型,其将被转成一个字符串。

filename 可选

当第二个参数传递的是一个 blob 对象(Blob)或者 file 对象(File),filename 参数就代表传给服务端的文件名(一个 USVString)。 Blob 对象的默认文件名是 "blob",File 对象的默认文件名则为其“name”属性

备注: 如果对 FormData 对象插入一个 blob 对象( Blob),那么发送给服务器的请求头部(header)里的“Content-Disposition”里的文件名称将会根据浏览器的不同而不同。

示例

先创建一个空的 FormData 对象:

js
var formData = new FormData(); // Currently empty

使用 FormData.set 设置键/值:

js
formData.set("username", "Chris");
formData.set("userpic", myFileInput.files[0], "chris.jpg");

规范

Specification
XMLHttpRequest
# dom-formdata-set

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
set

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见