set()
方法会对 FormData
对象里的某个
key
设置一个新的值,如果该
key
不存在,则添加。
set()
和 FormData.append
(FormData 接口的append() 方法 会添加一个新值到 FormData 对象内的一个已存在的键中,如果键不存在则会添加该键。") 不同之处在于:如果某个 key 已经存在,set()
会直接覆盖所有该 key 对应的值,而 `FormData.append则是在该 key 的最后位置再追加一个值。
该方法有两种使用方式,一个是传入两个参数,一个是传入三个参数。
formData.set(name, value);
formData.set(name, value, filename);
name:字段名称。
value:字段的值,如果是传入两个参数的方式,那么该值是一个 [USVString
](USVString 对应于所有可能的 unicode标量值序列的集合。),如果不是,将被转成一个字符串。如果是传入三个参数的方式,那么该值将是一个布尔值([Blob
]("Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。")),文件([File
](文件(File) 接口提供有关文件的信息,并允许网页中的 JavaScript 访问其内容。)),或者一个 USVString
,如果不是,将被转成一个字符串。
filename (可选):当第二个参数传递的是一个blob对象([Blob
](Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。))或者file对象([File
](文件(File) 接口提供有关文件的信息,并允许网页中的 JavaScript 访问其内容。)),filename参数就代表传给服务端的文件名(一个USVString)。Blob
对象的默认文件名是 "blob"。
示例:
先创建一个空的 FormData
对象:
var formData = new FormData(); // Currently empty
使用 FormData.set
设置键/值 :
formData.set('username', 'Chris');
formData.set('userpic', myFileInput.files[0], 'chris.jpg');