el-upload的多个文件与单个文件上传

本文介绍了如何在Vue应用中使用ElementUI的el-upload组件进行文件上传,包括支持多个文件上传、单个文件上传的示例,以及上传成功、超过限制和文件移除的处理函数。
摘要由CSDN通过智能技术生成

 

 样式图:

场景多个:

使用el-upload上传多个文件

<el-upload class="upload-demo" :action="uploadUrl" :on-remove="handleRemove1"
    :on-success="handleAvatarSuccess1"  multiple :limit="5" 
    :on-exceed="handleExceed1" :file-list="fileList1">
     <el-button size="small" type="primary">点击上传</el-button>
</el-upload>

multiple 就是可以上传多个的参数

文件的上传地址 :https://xxx.com/xxx/upload  配置在env文件
uploadUrl: process.env.VUE_APP_XXX配置的名字

handleAvatarSuccess1:上传成功后的函数
handleAvatarSuccess1(res, file, fileList) {  不同的接口的返回参数可能不一样
            let obj = {};
            obj.fileName = res.data.fileName;
            obj.fileUrl = res.data.filePath;
            this.bothFile1.push(obj);
        },


handleRemove1:移除已经上传的文件
bothFile1 :是要发送给接口的参数
handleRemove1(file, fileList) {      多个和单个的这里在我这篇文章中不一样
           this.bothFile1 = this.bothFile1.filter((item) => {
              return item.fileUrl != file.response.data.filePath;
         });
},

handleExceed1 :超过限制以后
 handleExceed1(files, fileList) {
            this.$message.warning(
                `当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`
            );
        },

fileList1:是上传后显示在按钮下面的文件列表
由于这里是在el-dialog里面,因此如果关闭后或者上传成功后fileList1要清空
场景单个:
   <el-upload :action="uploadBothPdf" :file-list="fileList3" :on-exceed="handleExceed3"
        :on-success="handleAvatarSuccess3" multiple :limit="1" >
         el-button size="small" type="primary">点击上传</el-button>
   /el-upload>

差别在于,由于只能上传一个文件所以就不需要remove,因为文件是必传,如果是非必选则需要写on-remove 在bothFles(传递的给接口的参数)里面去掉被删除的文件
  handleAvatarSuccess3(res, file) {
            this.bothFile3.fileName = res.data.fileName;
            this.bothFile3.fileUrl = res.data.filePath;
    },
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-upload组件本身支持多文件上传,但是默认是并发上传,这样容易导致服务器压力过大。如果需要实现自动上传,可以通过设置属性`:auto-upload="false"`来禁用自动上传,然后在上传按钮的点击事件中手动调用上传方法`this.$refs.upload.submit()`来实现逐个上传文件的功能。具体实现可以参考以下代码: ```html <el-upload ref="upload" :auto-upload="false" :on-success="handleSuccess" :on-error="handleError" > <el-button slot="trigger" type="primary">选取文件</el-button> <el-button style="margin-left: 10px;" type="success" @click="uploadFiles">上传文件</el-button> </el-upload> ``` ```javascript data() { return { fileList: [], // 上传的文件列表 currentIndex: 0 // 当前上传的文件索引 } }, methods: { // 上传文件 uploadFiles() { if (this.fileList.length === 0) { this.$message.warning('请先选择文件') return } this.currentIndex = 0 // 重置当前上传的文件索引 this.uploadFile(this.fileList[this.currentIndex]) // 上传第一个文件 }, // 上传单个文件 uploadFile(file) { this.$refs.upload.upload(file.raw) // 调用上传方法 }, // 上传成功回调 handleSuccess(response, file, fileList) { this.currentIndex++ // 当前上传的文件索引加1 if (this.currentIndex < this.fileList.length) { this.uploadFile(this.fileList[this.currentIndex]) // 继续上传下一个文件 } else { this.$message.success('上传成功') } }, // 上传失败回调 handleError(err, file, fileList) { this.$message.error('上传失败') } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值