elementui el-upload一次请求上传多个文件的实现

 更新时间:2023年10月08日 09:52:14   作者:D浩DzD  
使用ElementUI Upload的时候发现如果是默认方案,上传多张图片并不是真正的一次上传多张,本文就来介绍一下elementui el-upload一次请求上传多个文件的实现,具有一定的参考价值,感兴趣的可以了解一下

在使用element中的el-upload是时,当我们要上传多个文件时,el-upload内部会多次调用this.$refs.upload.submit();方法,从而实现多个文件上传,但是有时候,我们希望,当上传多个文件的时候,只给后端发送一次请求,这样就需要先把el-upload的自动上传改为手动上传:auto-upload=“false”

          <el-upload 
              ref="upload" 
              :limit="10" 
              accept=".jpg,.gif,.png,.jpeg,.txt,.pdf,.doc,.docx,.xls,.xlsx" 
              name="files" 
              :multiple="true"
              :action="baseURL"
              :headers="myToken" <!-- 请求头设置 -->
              :on-change="handleFileChange"
              :before-remove="handleFileRemove" 
              :auto-upload="false"
              :file-list="upload.fileList" 
              >
              <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
            </el-upload>
            <el-button type="primary" @click="submitFileForm">确 定</el-button>
data(){
	return {
      upload: {
        fileList: [],
        fileName: []
      },
	}
}

通过FormData创建一个数据对象,并且将上传的文件append到对象中

    // 上传发生变化钩子
    handleFileChange(file, fileList) {
      this.upload.fileList = fileList;
    },
    // 删除之前钩子
    handleFileRemove(file, fileList) {
      this.upload.fileList = fileList;
    },
    // 提交上传文件
    submitFileForm() {
      // 创建新的数据对象
      let formData = new FormData();
      // 将上传的文件放到数据对象中
      this.upload.fileList.forEach(file => {
        formData.append('file', file.raw);
        this.upload.fileName.push(file.name);
      });
      console.log("提交前",formData.getAll('file'));
      // 文件名
      formData.append('fileName', this.upload.fileName);
      // 自定义上传
      this.$api.uploadFile(formData).then(response => {
          console.log(response);
          // if(response.code == 200){
          //   this.$refs.upload.clearFiles();
          //   this.msgSuccess('上传成功!');
          // }else{
          //   this.$message.error(response.msg);
          // }
        })
        .catch(error => {
          this.$message.error('上传失败!');
        });
    },

使用自定义上传的接口,而不是使用*this.$refs.upload.submit();*方法
注意上传文件接口的请求头中headers中的’Content-Type’要为’multipart/form-data’

// 封装的上传请求
	uploadFile(params) {
		return axios.post(`/shiro/swpe/permission/uploadOrStartProceBPS`, params,
		 { headers: { 'Content-Type': 'multipart/form-data', token: window.localStorage.getItem('token')}})
	},

到此这篇关于elementui el-upload一次请求上传多个文件的实现的文章就介绍到这了,更多相关elementui el-upload请求多文件上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • vue.js select下拉框绑定和取值方法

    vue.js select下拉框绑定和取值方法

    下面小编就为大家分享一篇vue.js select下拉框绑定和取值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 解决element-ui的el-dialog组件中调用ref无效的问题

    解决element-ui的el-dialog组件中调用ref无效的问题

    这篇文章主要介绍了解决element-ui的el-dialog组件中调用ref无效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 深入理解Vuex的作用

    深入理解Vuex的作用

    这篇文章主要介绍了深入理解Vuex的作用,对Vuex感兴趣的同学,可以参考下
    2021-05-05
  • Vue实现批量注册全局组件的示例代码

    Vue实现批量注册全局组件的示例代码

    在项目开发中,我们经常会封装一些全局组件,然后在入口文件中统一导入,所以本文主要为大家详细介绍了Vue如何批量注册全局组件,感兴趣的小伙伴可以了解下
    2024-01-01
  • vue实现GitHub的第三方授权方法示例

    vue实现GitHub的第三方授权方法示例

    本文主要介绍了vue实现GitHub的第三方授权,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • element ui 表格动态列显示空白bug 修复方法

    element ui 表格动态列显示空白bug 修复方法

    今天小编就为大家分享一篇element ui 表格动态列显示空白bug 修复方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 手把手教你Vue3实现路由跳转

    手把手教你Vue3实现路由跳转

    Vue Router是Vue.js的官方路由器,它与Vue.js核心深度集成,使使用Vue.js构建单页应用程序变得轻而易举,下面这篇文章主要给大家介绍了关于Vue3实现路由跳转的相关资料,需要的朋友可以参考下
    2022-08-08
  • vue3 获取元素高度不准的问题

    vue3 获取元素高度不准的问题

    这篇文章主要介绍了vue3 获取元素高度不准的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 详解VUE-地区选择器(V-Distpicker)组件使用心得

    详解VUE-地区选择器(V-Distpicker)组件使用心得

    这篇文章主要介绍了详解VUE-地区选择器(V-Distpicker)组件使用心得,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • vue $refs动态拼接获取值问题

    vue $refs动态拼接获取值问题

    这篇文章主要介绍了vue $refs动态拼接获取值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论