elementUI之el-upload组件覆盖默认上传

本文详细介绍了如何使用el-upload组件进行文件上传的自定义操作,包括关闭自动上传、设置上传地址为空字符串以及覆盖默认上传行为。重点讲解了http-request属性的使用,通过这个属性可以挂载上传函数并添加额外参数。在上传成功后,由于覆盖了默认上传,需要在自定义函数中处理成功回调。示例代码展示了如何生成FormData对象并进行文件上传。

el-upload组件

此文章主要针对覆盖默认上传部分

代码:

<el-upload ref="upload" action="''" :auto-upload="false" :http-request="httpRequest" :limit="1"
    :file-list="demandFileList"  :on-error="uploadFalse">
        <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
        <el-button size="small" type="success" @click="submitUpload">上传到服务器</el-button>
</el-upload>


 methods: {
    async httpRequest(param) {
      let fileObj = param.file // 相当于input里取得的files
      let fd = new FormData()// FormData 对象
      fd.append('file', fileObj)// 文件对象
      fd.append('id', this.ATdemand.id)
      let data = await uploadCase(fd)
    },
     submitUpload() {
       this.$refs.upload.submit()
    }
 }

重点:
参数说明类型可选值默认值
action必选参数,上传的地址string
auto-upload是否在选取文件后立即进行上传booleantrue
http-request覆盖默认的上传行为,可以自定义上传的实现function
  1. 由于action参数必选,所以这边将他设置为空字符串‘ ’
  2. auto-upload关闭立即上传
  3. http-request挂载文件上传函数
  4. 通过点击上传按钮调用内置方法this.$refs.upload.submit( ),这个方法会调用http-request的方法,同时将文件作为param传入
  5. 需要附加参数可以在httpRequest内生成的FormData对象添加
  6. 覆盖默认上传会失去请求成功on-success方法的传参功能,可以在上传成功后通过返回参数自行判断
Element UI 2 中修改 `el-upload` 组件上传进度条样式或行为,主要涉及两个方面:一是通过 `on-progress` 事件控制进度条的行为逻辑,二是利用自定义 CSS 或内联样式来调整其外观。 ### 修改进度条行为 Element UI 的 `el-upload` 组件支持 `on-progress` 回调函数,该回调会在文件上传过程中不断触发。你可以利用此事件来更新组件中的进度条状态。例如: ```javascript methods: { uploadVideoProcess(event, file, fileList) { this.progressFlag = true; this.loadProgress = parseInt(event.percent); if (this.loadProgress >= 100) { this.loadProgress = 100; setTimeout(() => { this.progressFlag = false; }, 1000); } } } ``` 在上述代码中,`progressFlag` 控制进度条是否显示,而 `loadProgress` 则保存当前上传百分比[^2]。 ### 自定义进度条样式 如果需要修改默认进度条的样式,可以通过以下几种方式实现: #### 使用 `el-progress` 组件自定义显示 可以使用 `v-if` 或 `v-show` 来动态控制一个独立的 `el-progress` 组件,根据上传进度更新其属性值: ```html <el-progress v-if="progressFlag" type="circle" :percentage="loadProgress" width="250" style="position: absolute;left: 34%;top: 37%;"></el-progress> ``` 这里 `type="circle"` 设置了环形进度条,`width` 属性决定了其大小,也可以通过额外的 CSS 类来自定义更复杂的样式[^1]。 #### 自定义 CSS 样式 对于某些嵌入式的进度条(如线性进度条),可以通过添加自定义类名并覆盖默认样式来实现视觉上的调整: ```html <el-progress class="custom-progress" :percentage="loadProgress"></el-progress> ``` 然后在样式部分: ```css .custom-progress .el-progress-bar__inner { background-color: #ff6600 !important; height: 20px !important; } ``` 这样就可以改变进度条的颜色和高度[^2]。 ### 替换为完全自定义的上传行为 当需要更高级的控制(比如 Base64 转码、多文件处理等)时,可以使用 `http-request` 属性替换默认上传行为,并结合手动创建的进度条进行操作。这允许开发者完全控制上传流程及进度展示[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值