加载中...

文件上传---FormData格式的传参

一般前端做  文件导入功能 / 上传功能 的时候会用到Formdata的格式,来上传文件和数据

会比较常用的两种方式:

let formData = new FormData(); // 当前为空

1. 直接表单传值

可以使用FormData.append来添加键/值对到表单里面;

  1. //传数值
  2. formData.append(''name'', id);
  3. //传文件
  4. formData.append(''files'', file);

2. 后端的多部分传参

和后端接口保持统一,那么可能不全是表单格式的数据, 可能设置的不同的格式,比如文件格式的文件和数据格式的数值,因此需要带格式传过去(new Blob方法)。

  1. //传文件
  2. formData.append(''file-data'', file);
  3. //传数据(元数据格式)
  4. formData.append(''meta-data'',new Blob([JSON.stringify(data)], { type: ''application/json'' }) )


方法拓展:

1. FormData  对象将数据编译成键值对,以便用XMLHttpRequest来发送数据。其主要用于发送表单数据,但亦可用于发送带键数据key/value,而独立于表单使用。如果表单enctype属性设为 multipart/form-data,则会使用表单的submit()方法来发送数据,从而发送数据具有同样形式。

  FormData.append(key,value)加数据,如果指定的key不存在则会新增一条数据,如果key存在,则追加到数据末尾.

  FormData.append(key)  从对象中删除指定键,即 key,和它对应的值,即 value

  FormData.has(key) 返回一个布尔值,表示该FormData对象是否含有某个key

  FormData.getAll(key)方法会返回该 FormData 对象指定 key 的所有值。

2. Blob  表示二进制类型的大对象。在数据库管理系统中,将二进制数据存储为一个单一个体的集合。Blob 通常是影像、声音或多媒体文件。在 JavaScript 中 Blob 类型的对象表示不可变的类似文件对象的原始数据。

  Blob 使用场景: 分片上传,从互联网下载数据,Blob 用作 URL,Blob 转换为 Base64,图片压缩,生成 PDF 文档