elementui实现文件上传,element ui 文件上传

  elementui实现文件上传,element ui 文件上传

  本文主要介绍Vue ElementUI手动上传excel文件到服务器的详细说明。对ElementUI感兴趣的同学可以参考一下。

  

目录

  属性设置处理逻辑的概述

  

概述

  具体需求场景如下:

  选择excel文件后,需要手动将导入的excel文件上传到后台服务器,并在导入成功后显示统计结果。还有一个官网手动上传的例子,地址通过action=url 传入,但是实际项目中的请求需要自己配置。下面详细介绍实现方法。

  描述:

  从上传文件到显示统计结果,我们后端给出了两个接口:首先调用文件上传接口,然后根据后端返回的标记调用统计结果接口。

  

属性设置

  。vue文件

  el-row

  div class= El-form-item _ _ content

  El-上传引用=上传

  接受=。xls,xlsx

  action=#

  :自动上传=false

  :multiple=false

  :file-list=fileList

  :上传前=上传前

  :http-request= upload http request

  :on-remove=fileRemove

  :on-change=fileChange

  El-button size= small type= primary 选择文件/el-button

  div slot= tip class= El-upload _ _ tip 一次只能上传一个xls/xlsx文件,长度不超过10M/div。

  /El-上传

  /div

  /el-row

  el-row

  El-button size= small @ click= close dialog 取消/el-button

  El-button type= primary size= small @ click= submit upload 上传/el-button

  El-button type= primary size= small @ click= downloadres 下载反馈结果/el-button

  /el-row

  其中包括:

  动作:上传的地址可以忽略,但不建议删除。可以用普通的字符串代替。

  自动上传:是否自动上传,因为这里是手动上传,所以设置为false。

  Multiple:是否支持多选,此处设置为false。

  File-list:列出上传文件的数组。

  上传前:上传文件前的钩子,参数是上传的文件,在这里可以判断上传文件的类型和大小。

  Http-request:用户定义的上传方法将覆盖默认上传行为(即action=url )

  On-remove:删除上传文件时触发的方法。

  On-change:当上传文件的状态(添加、上传成功或失败)改变时触发的方法。

  

处理逻辑

  逻辑代码如下:

  方法:{

  //上传文件前钩子:判断上传文件的格式和大小,如果返回false则停止上传。

  上传前(文件){

  //文件类型

  const isType=file . type=== application/vnd . ms-excel

  const isTypeComputer=file . type=== application/vnd . openxml formats-office document . spreadsheetml . sheet

  const fileType=isType isTypeComputer

  如果(!文件类型){

  这个。$message.error(上传的文件只能是xls/xlsx格式!)

  }

  //文件大小限制为10M

  const file limit=file . size/1024/1024 10;

  如果(!文件限制){

  这个。$message.error(上传文件大小不超过10M!);

  }

  返回文件类型文件限制

  },

  //自定义上传方法,param为默认参数,可以获取文件信息。具体信息如下

  uploadHttpRequest(param) {

  constformdata=new formdata()//formdata对象,添加的参数只能以append(key ,value)的形式添加

  Formdata.append (file ,param . file)//添加文件对象

  formData.append(uploadType ,this.rulesType)

  const URL=` $ { this . mybase URL }/operation/rule import/import data `//上传地址

  axios.post(url,formData)。然后(res={

  const { data: { code,mark } }=res

  if(code===0) {

  Param.onSuccess() //上传成功的文件显示绿色复选标记。

  this.uploadMark=mark

  }

  return . count data(this . upload mark)//根据响应的标记值调用统计结果接口,返回一个连锁调用的承诺。

  })。然后(res={//链式调用,统计响应结果

  const { data: { code,data } }=res

  if(code===0) {

  Console.log(统计结果,数据)

  }

  })。catch(错误={

  Console.log(失败,错误)

  Param.onError() //上传失败的文件将从文件列表中删除。

  })

  },

  //统计结果

  计数文件(标记){

  返回新承诺((解决,拒绝)={

  爱可信。get(`/operation/rule import/count data?mark=${mark} `)。然后(res={

  解析(分辨率)

  })。catch(错误={

  拒绝(错误)

  })

  })

  },

  //点击上传:手动上传到服务器,触发组件的http-request。

  submitUpload() {

  这个。$refs.upload.submit()

  },

  //文件已经更改。

  fileChange(文件,文件列表){

  if (fileList.length 0) {

  this . file list=[file list[file list . length-1]]//显示最后选择的文件

  }

  },

  //删除选定的文件

  fileRemove(文件,文件列表){

  if(fileList.length 1) {

  This.uploadDisabled=true //如果没有选择文件,上传按钮将被禁用。

  }

  },

  //取消

  closeDialog() {

  这个。$ refs . upload . Clear files()//清除上传的文件对象

  This.fileList=[] //清空选中的文件列表

  这个。$emit(close ,false)

  }

  }

  http-request的Param参数,打印结果如图所示。通过param.file获取当前文件对象

  以上是Vue ElementUI如何手动上传excel文件到服务器的详细说明。关于Vue ElementUI如何手动上传excel文件到服务器的更多信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: