VUE+ElementUI+Axios文件上传的坑及解决方案

最新的实战项目已经更新到GitHub了,大家点击直接看我的解决方案即可,对axios做了二次的深度封装,但使用起来不会有太大改变。

这个方案已经太古老了,而且使用起来比较麻烦,不再推荐大家看这个教程了,如果真的有需要我可以给大家出一个教程。

后端项目:SpringBoot

如果大家暂时找不到解决方案,可是试试我哒!若是有好的解决方案,请大佬给出自己的方案,方便的话共享下,评论私信给我都行哒!

给大家说下注意点哦:

1、不要请求做任何拦截,不然会发现有个彩蛋,'Content-Type' = 'application/json'

2、'Content-Type' = 'multipart/form-data'

3、new FormData()

4、创建一个纯净无污染请求:

import axios from 'axios'
let formData = new FormData();
formData.append("files", file.raw);
formData.append("space", this.params.space);
axios.defaults.withCredentials = true;
axios.defaults.baseURL = "/api";
axios.defaults.timeout = 50000;
axios.defaults.headers.post['Content-Type'] = 'multipart/form-data';

axios.post(this.$reqURI, formData).then((resp) => {
  console.log(resp)
  if (resp.data.status && resp.data.dataObj && resp.data.dataObj[0].success) {
    // 业务操作
  }
})
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue+elementui的普通上传可以使用elementui中的el-upload组件,具体步骤如下: 1. 在Vue组件中引入el-upload组件。 ``` <template> <el-upload action="https://www.example.com/upload" :headers="{Authorization: 'Bearer ' + token}" :data="{id: fileId}" :on-success="handleSuccess" :on-error="handleError" :on-progress="handleProgress"> <el-button>点击上传</el-button> </el-upload> </template> <script> import {ElUpload, ElButton} from 'element-ui'; export default { components: {ElUpload, ElButton}, data() { return { token: 'your_token', fileId: 'your_file_id' }; }, methods: { handleSuccess(response, file, fileList) { console.log(response); }, handleError(error, file, fileList) { console.log(error); }, handleProgress(event, file, fileList) { console.log(event); } } }; </script> ``` 2. 在el-upload组件中设置上传的地址、请求头、上传数据、上传成功回调、上传失败回调和上传进度回调等参数。 3. 在上传成功回调函数中处理上传成功后的逻辑。 大文件分片上传可以使用如下步骤: 1. 前端将大文件分为若干个片段,并将每个片段上传到后端。 2. 后端将每个片段存储在服务器上,并返回每个片段的文件名和存储路径。 3. 前端将每个片段的文件名和存储路径组成一个数组,发送给后端。 4. 后端将数组中的每个片段按照顺序合并成一个完整的文件。 5. 前端可以在上传过程中显示上传进度,并支持暂停、恢复和取消上传。可以使用Vue+elementui+axios实现大文件分片上传

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值