element ui 手动文件上传带有进度条 | 您所在的位置:网站首页 › elementui拖拽添加一条 › element ui 手动文件上传带有进度条 |
这是一篇学习笔记(我怕过段时间自己忘记怎么做了)有错误的地方请多多指教 目录 一、需要的基础属性 二、属性设置完之后如何上传 三、另外一种简单的方法添加进度条 一、需要的基础属性先搞懂Upload 上传这一部分的重要属性,vue绑定属性的指令为 v-bind:(简写 :) 1、auto-upload 因为我项目的需求是选取文件后,手动上传文件,所以在标签内将此属性改为false(手动上传) 选择文件 上传文件2、action(这个属性就是url) action属性是必填的,也就是平时使用axios请求里的url,可以把axtion的属性值在data里面赋值 选择文件 上传文件3、headers 同理action 如果在上传文件时需要携带token,那就必须要传headers 选择文件 上传文件4、data 就是axios发送请求时的data,如果在上传文件的同时需要上传表单信息,那表单信息就可以放在data属性里面 选择文件 上传文件5、file-list 给file-list在data里定义一个空的数组,这是装上传的文件的容器 选择文件 上传文件6、limit 注意:以上所有属性的参数,我都是放到data里面的,这样html的代码看起来要清晰一些 // url action: '', // headers headers: { "Authorization": 'Bearer ' + sessionStorage.getItem('token') } // data params: {},7、accept 我这里限制的上传文件的后缀为dxf格式的,所以就直接就写成 accept=' .dxf ',如果还可以允许上传其他格式的文件,例如png,则直接在参数后面逗号隔开添加 accept=' .dxf,.png ' 。 选择文件 上传文件因为前面我添加了属性 :auto-upload='false' 手动上传文件,手动上传的方法在element ui文档里面也写了方法: 到这个地方,就已经实现了手动文件上传的步骤,但是在实际开发中,我们需要得到上传成功或是失败的结果,况且我们后面还要在上传过程中添加进度条,这是就需要用到钩子函数 之所以要在progressPercent = 72的时候结束定时器: progressPercent超过了100会报错在还没有上传成功的时候就直接让progressPercent=100,做进度条就没有意义72这个值可以更具实际情况随便定,完成之后创建的定时器循环的速度可以快一些,用户体验好 三、另外一种简单的方法添加进度条在上传时 :on-progress="onUpload" 钩子函数返回的event里面也有进度条的数值,但是我试了一下发现还没返回成功结果,进度条就已经加载到100%了,下面代码就是直接使用上传时的钩子函数返回的event的percent参数作为进度条的参数。 methods:{ //手动上传按钮 submitUpload(){ this.$refs.upload.submit() }, //上传时 onUpload(event, file, fileList){ //三个参数看情况使用 this.loading = true this.progressPercent = Math.floor(event.percent); }, //上传成功 upoloadSuccess(res, file, fileList){ //三个参数看情况使用 // 清除上传文件列表 this.$refs.upload.clearFiles(); // 必须在上传成功之后 进度条继续++ if (res.status == true) { //关闭遮罩,进度条归零 this.loading = false this.progressPercent = 0 } }, //上传失败 upoloadErr(){ }, } |
CopyRight 2018-2019 实验室设备网 版权所有 |