文件上传的传统方式是通过 form 表单提交,但是今天我们将换一种方式来实现这个功能。同一口味的东西吃多了还会腻呢,所以适当的时候换一换口味还是有必要的,好了,直接进入正文。

首先,来介绍一下我们今天的主角 --- FormData,是的,就是他,虽然他和 form长得有点像,但是是2个不一样的东西。对于form相信大家一定不陌生,所以我们重点介绍一下 FormData。

FormData对象可以组装一组用 XMLHttpRequest 发送请求的键/值对.它可以灵活方便的发送表单数据,因此可以独立于表单使用.如果把表单的编码类型设置为 multipart/form-data,则通过 FormData 传输的数据格式和表单通过 submit() 方法传输的数据格式相同.
<input type="file" class="file"> // 通过file来选择需要上传的文件
  1. var formData = new FormData() // 声明一个FormData对象
  2. var formData = new window.FormData() // vue 中使用 window.FormData(),否则会报 'FormData isn't definded'
  1. formData. append( 'userfile', document.querySelector( 'input[type=file]').files[ 0]) // 'userfile' 这个名字要和后台获取文件的名字一样;
  2. //'userfile'是formData这个对象的键名
  1. var options = { // 设置axios的参数
  2. url: '请求地址',
  3. data: formData,
  4. method: 'post',
  5. headers: {
  6. 'Content-Type': 'multipart/form-data'
  7. }
  8. }
  9. this.axios(options).then((res) =&gt; {}) // 发送请求
Logo

前往低代码交流专区

更多推荐