FormData: append() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

FormData 接口的 append() 方法用于在 FormData 对象中向现有键添加新值,如果键不存在,则添加该键。

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

语法

js
append(name, value)
append(name, value, filename)

参数

name

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

value

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

filename 可选

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

注意: 如果您将 Blob 指定为要附加到 FormData 对象的数据,则在“Content-Disposition”标头中报告给服务器的文件名在不同浏览器之间可能有所不同。

返回值

无(undefined)。

示例

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

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

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

与普通表单数据一样,您可以为同一名称附加多个值。

js
formData.append("user-pic", myFileInput.files[0], "chris1.jpg");
formData.append("user-pic", myFileInput.files[1], "chris2.jpg");

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

js
formData.append("name", true);
formData.append("name", 72);
formData.getAll("name"); // ["true", "72"]

规范

规范
XMLHttpRequest
# dom-formdata-append

浏览器兼容性

另见