vue+element使用upload组件,`http-request`属性重写上传的方法

因为上传文件的同时,还要把文件在大小一起请求到服务端,而element原生的data(上传时附带的额外参数)做不到这个需求,所以只能使用http-request重写了。

使用`http-request`属性重写后,发现element原生进度条消失了。。。

另外on-success(文件上传成功时的钩子)、on-error(文件上传失败时的钩子)等等也都失效了

解决方法:

注意:action 虽然用不上,但也不能删,随便给个字符就行了

<el-upload
        ref="upload"
        action="null" 
        :file-list="videoFileList"
        :http-request="uploadResourceRequest"
>
  <el-button type="success" size="small" slot="trigger">上傳文件到服務器</el-button>
</el-upload>

export default {
    data() {
        return {
            //选择需要上传的文件列表
            videoFileList: []
        }
    }
}

methods: {
     /**
    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
element-ui的upload组件提供了`http-request`属性,用于自定义上文件的方法。这个方法会接收三个参数:文件对象、上地址和附加参数。下面是一个简单的例子: ```html <el-upload action="/upload" :http-request="uploadFile" :on-success="onSuccess" :on-error="onError" drag multiple> </el-upload> ``` ```javascript methods: { uploadFile(file, params) { const formData = new FormData() formData.append('file', file) formData.append('name', params.name) return axios.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }) }, onSuccess(response, file, fileList) { console.log('上成功', response, file, fileList) }, onError(error, file, fileList) { console.log('上失败', error, file, fileList) } } ``` 在上面的例子中,我们定义了一个`uploadFile`方法,接收文件对象和附加参数,使用`axios`发送一个POST请求,将文件和参数放在`FormData`里面,设置`Content-Type`为`multipart/form-data`,最后返回一个Promise对象。 在`on-success`和`on-error`事件中,我们可以处理上成功或失败的情况。其中,`on-success`会接收三个参数:响应数据、文件对象和当前文件列表;`on-error`会接收两个参数:错误对象和当前文件对象。 需要注意的是,`http-request`方法必须返回一个Promise对象,并且必须在上成功或失败时调用`resolve`或`reject`方法,否则上状态可能会出现异常。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值