FormData: set() 方法

Baseline 已广泛支持

此特性已成熟稳定,适用于多种设备和浏览器版本。自 2018 年 10 月起,它已在各浏览器中可用。

注意:此功能在 Web Workers 中可用。

FormData 接口的 set() 方法用于在 FormData 对象中设置一个已存在键的新值,或者在键不存在时添加该键/值对。

set()append() 的区别在于,如果指定的键已存在,set() 会用新值覆盖所有现有值,而 append() 会将新值添加到现有值集的末尾。

语法

js
set(name, value)
set(name, value, filename)

参数

name

包含 value 中数据的字段的名称。

value

字段的值。可以是字符串或 Blob(包括 File 等子类)。如果未指定任何这些类型,则会将值转换为字符串。

filename 可选

当将 BlobFile 作为第二个参数传递时,报告给服务器的字段名(字符串)。Blob 对象的默认文件名是 "blob"。 File 对象的默认文件名是文件的名称。

注意: 如果将 Blob 指定为要添加到 FormData 对象的数据,那么在 "Content-Disposition" 头部报告给服务器的文件名在不同浏览器之间可能会有所不同。

返回值

无(undefined)。

示例

js
formData.set("username", "Chris");

当值是 Blob(或 File)时,你可以使用 filename 参数指定其名称。

js
formData.set("user-pic", myFileInput.files[0], "chris.jpg");

如果值不是字符串或 Blobset() 会自动将其转换为字符串。

js
formData.set("name", 72);
formData.get("name"); // "72"

规范

规范
XMLHttpRequest
# dom-formdata-set

浏览器兼容性

另见