一般前端做 文件导入功能 / 上传功能 的时候会用到Formdata的格式,来上传文件和数据。
会比较常用的两种方式:
let formData = new FormData(); // 当前为空
1. 直接表单传值
可以使用来添加键/值对到表单里面;
//传数值
('name', id);
//传文件
('files', file);
2. 后端的多部分传参
和后端接口保持统一,那么可能不全是表单格式的数据, 可能设置的不同的格式,比如文件格式的文件和数据格式的数值,因此需要带格式传过去(new Blob方法)。
//传文件
('file-data', file);
//传数据(元数据格式)
('meta-data',new Blob([(data)], { type: 'application/json' }) )
方法拓展:
1. FormData 对象将数据编译成键值对,以便用XMLHttpRequest来发送数据。其主要用于发送表单数据,但亦可用于发送带键数据key/value,而独立于表单使用。如果表单enctype
属性设为 multipart/form-data,则会使用表单的submit()方法来发送数据,从而发送数据具有同样形式。
(key,value)加数据,如果指定的key不存在则会新增一条数据,如果key存在,则追加到数据末尾.
(key) 从对象中删除指定键,即 key,和它对应的值,即 value
(key) 返回一个布尔值,表示该FormData对象是否含有某个key
(key)方法会返回该 FormData 对象指定 key 的所有值。
2. Blob 表示二进制类型的大对象。在数据库管理系统中,将二进制数据存储为一个单一个体的集合。Blob 通常是影像、声音或多媒体文件。在 JavaScript 中 Blob 类型的对象表示不可变的类似文件对象的原始数据。
Blob 使用场景: 分片上传,从互联网下载数据,Blob 用作 URL,Blob 转换为 Base64,图片压缩,生成 PDF 文档