基于element ui 实现七牛云自定义key上传文件,并监听更新上传进度

借助上传Upload 上传组件的 http-request 覆盖默认的上传行为,可以自定义上传的实现

      <el-upload
            multiple
            ref="sliderUpload"
            :data="uploadData"
            :action="uploadData.url"
            list-type="picture-card"
            accept="image/png,image/jpeg,image/jpg"
            :auto-upload="true"
            :limit="numberLimit.slider"
            :file-list="sliderList"
            :http-request="sliderRequest"
            :before-upload="beforeUpload"
            :on-remove="sliderRemove"
            :on-preview="picturePreview"
            :on-error="uploadError"
            :on-exceed="uploadLimit">
            <i class="el-icon-plus"></i>
            <div class="el-upload__tip" slot="tip">限上传9张轮播图</div>
          </el-upload>
  
sliderRequest(upload) {
      // 文件上传自行处理上传
      // 创建FormData对象 添加相关上传参数
      const formData = new FormData()
      // 文件对象
      formData.append('file', upload.file)
      // key 文件名处理 images/时间戳_随机字符串.文件后缀
      formData.append('key', `images/${new Date().getTime()}_${randomString()}.${upload.file.name.substring(upload.file.name.lastIndexOf('.') + 1)}`)
      // token
      formData.append('token', this.uploadData.token)

      // 上传文件
      // onUploadProgress 查看axios文档 https://github.com/axios/axios
      axios.post(this.uploadData.url, formData, {
        onUploadProgress: (event) => {
          // 监听上传进度
          event.percent = event.loaded / event.total * 100
          upload.onProgress(event)
        }
      }).then((response) => {
        const res = response.data
        if (res.code === 200) {
          // 调用组件上传成功方法
          upload.onSuccess()
          // 轮播图上传成功 这里做相关逻辑this.$message.success('上传成功')
        }
      }).catch((err) => {
        // 调用组件上传失败方法
        upload.onError()
        this.$message.error('上传失败,' + err)
      })
    }

 

 

转载于:https://www.cnblogs.com/lanshengzhong/p/10308114.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值