element-ui upload组件覆写默认上传行为

使用 http-request 参数来自定义上传行为

<el-upload
   ref="upload"
   :show-file-list="false"
   :on-success="handleUploadSuccess"
   :on-progress="handleUploading"
   :http-request="upload"
   class="upload-demo"
   accept=".doc, .docx, .ppt, .pdf"
   action="">
   <el-button slot="trigger" size="small" type="primary">选取文档</el-button>
   <el-progress v-show="docFlag" :percentage="docPercentage" style="margin-top: 30px;"/>
</el-upload>

使用这个参数之后,on-success,和on-progress就不起作用了,可以这样做

upload(fileObj) {
  var formData = new FormData()
  formData.append('file', fileObj.file)
  uploadDoc(formData, fileObj).then(function(res) {
    fileObj.onSuccess(res.payload.file[0])   // 接口返回成功时处理,调用onSuccess
  })
},

这里使用axios的一个封装,执行上传

export function uploadDoc(data, fileObj) {
  return request({
    url: '/rest/upload',
    method: 'post',
    data,
    headers: { 'Content-Type': 'multipart/form-data' },
    timeout: undefined,
    onUploadProgress: progressEvent => {
      const complete = (progressEvent.loaded / progressEvent.total * 100 | 0)
      fileObj.onProgress({ percent: complete })     //调用upload组件的 onProgress
    }
  })
}

显示进度

handleUploading(obj) {
	 this.docFlag = true
	 this.docPercentage = obj.percent
},

上传成功后的回调

handleUploadSuccess(res, file) {
  this.docFlag = false
  this.docPercentage = 0
},
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值