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');