el-upload自定义上传文件显示进度条

这篇具有很好参考价值的文章主要介绍了el-upload自定义上传文件显示进度条。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

el-upload自定义上传文件时需要显示进度条,但使用http-request会覆盖默认的上传行为,on-progress也就不生效了,所以可以自定义上传的实现

效果图

el-upload 进度条,前端——vue,vue.js,前端,el-upload,上传文件

功能实现

按钮
<el-upload class="upload-demo" drag action="" multiple accept=".xls,.xlsx" :show-file-list="false" :http-request="uploadFile" :before-upload="beforeUpload">
   <i class="el-icon-upload"></i>
   <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
 </el-upload>
 
 //进度条
 <el-progress v-if="showProgress" :percentage="percentage"></el-progress>
数据
data() {
    return {
    	showProgress:false,
    	percentage:0
    }
}
事件
beforeUpload(file) {
   const isLimit = file.size / 1024 / 1024 < 10;
   if (!isLimit) {
     this.$message.error('文件不能超过10M!');
     return
   }
 },
 
  //上传excel
  async uploadFile(params) {
    let fileFormat = params.file.name.toLowerCase().split(".").splice(-1)[0];
    if (fileFormat !== 'xls' && fileFormat !== 'xlsx') {
      this.$message.error('文件类型不正确!');
      return
    }
    const _file = params.file;
    this.showProgress = true;
    // 前端解析显示
    const fileReader = new FileReader();
    fileReader.onload = (ev) => {
      try {
        const data = ev.target.result;
        const workbook = XLSX.read(data, {
          type: 'binary',
          cellDates: true
        });
        // 取第一个key的值
        let key = this.getFirstAttr(workbook.Sheets);
        //excel中的字段无值时默认为空
        const sheet2JSONOpts = { defval: "" };
        // 取到数组
        const sheetArray = XLSX.utils.sheet_to_json(workbook.Sheets[key], sheet2JSONOpts);
        // 赋值
        if (!this.isEmpty(sheetArray)) {  //判断上传文件是否为空的方法,自己写就行
          //进度条处理(重点)
          const uploadEvent = (progressEvent) => {
            this.percentage = Number(((progressEvent.loaded / progressEvent.total) * 100).toFixed(0));
          };

          // 后端传file类型
          let form = new FormData();
          form.append("multipartFile", params.file);
		  // 导入接口
          this.importCheck(form, uploadEvent)   //uploadEvent需放在axios请求头headers里面
        } else {
          this.showProgress = false;
          this.$message.error('文件无数据,请重新上传');
          return
        }
      } catch (e) {
        this.$message.error('文件类型不正确!');
      }
    };
    fileReader.readAsBinaryString(_file);
  },

导入接口

 async importCheck(params, uploadEvent) {
      let res = await this.$http.costDetail.costDetailImportCheck(params, uploadEvent); // 此处是自己项目封装的api
      if (res.code === "200") {
        //逻辑处理省略
        this.showProgress = false;
      } else {
        this.showProgress = false;
      }
    },

接口方法

costDetailImportCheck: function (data,uploadEvent) {
        return instance.api('baEquipmentCost/checkExcel', 'post', data,'','',uploadEvent)
 },

uploadEvent——在封装的axios请求方法的headers里面加入即可(关键)

el-upload 进度条,前端——vue,vue.js,前端,el-upload,上传文件文章来源地址https://www.toymoban.com/news/detail-552185.html

到了这里,关于el-upload自定义上传文件显示进度条的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elementUI+el-upload 上传、下载、删除文件以及文件展示列表自定义为表格展示

    官方文档 https://element.eleme.cn/#/zh-CN/component/upload 具体参数说明,如何实现上传、下载、删除等功能 action :文件上传地址,我的项目里已经封装好了请求。使用的时候需要依据项目填写。 show-file-list : 是否显示已上传文件列表。 headers :设置上传的请求头部。我的项目需要传

    2024年01月20日
    浏览(57)
  • el-upload实现自定义携带参数上传文件( :http-request 方式)

    1. el-upload组件 使用 :http-request 自定义上传方法,action仍然要有,随便起个名字即可, 注意使用 :http-request 之后, :on-success, :on-error 指令是不会触发的 自定义上传 函数为  uploadFile 2. 封装上传方法(定义传输请求头,传输格式) 在main.js中将封装好的方法加入全局,后面可直接

    2024年02月11日
    浏览(83)
  • [已解决]前端使用el-upload,后端使用文件上传阿里云报错:异常信息:java.lang.NullPointerException: null

    前端使用el-upload,后端使用文件上传阿里云报错: 报错原因:前端image参数未传进去 解决方法:在el-upload添加属性 name=\\\"image\\\" 文件传进去了!

    2024年01月20日
    浏览(60)
  • elementUI 的上传组件<el-upload>,自定义上传按钮样式

    原理:调用el-upload组件的方法唤起选择文件事件 效果: 页面代码: js代码:(其他逻辑与element文档的上使用一致) css代码: 隐藏原来的选择图片按钮 原理:把图片显示分离出来,el-upload做选择图片使用,单独做一个显示图片的区域 效果:  页面代码: js 代码: css代码:

    2024年02月13日
    浏览(42)
  • el-upload自定义上传http-request

    使用http-request自定义上传,触发on-success,on-error钩子。 template js 也可以返回Promise,on-success,on-error钩子就会被执行。

    2024年02月07日
    浏览(39)
  • elementui el-upload 上传文件

    在使用element中的el-upload上传文件或者图片时,需要先把el-upload的自动上传改为手动上传:auto-upload=“false”然后el-upload内部会调用this.$refs.upload.submit();方法,从而实现多个文件上传。 提示:以下是本篇文章正文内容,下面案例可供参考 代码如下(示例): 需要注意的是 acce

    2024年02月06日
    浏览(53)
  • el-upload实现自定义上传http-request

    在使用element的上传组件的时候,我这里用的是上传图片,如图1所示   正常上传是没有问题的,但如果我上传了第一张之后,然后去上传第二张,依次这样去替换自己想要得,虽然最后一张会把上传上传得给覆盖,但是还是会存在一些问题 1.替换多少次,上传接口就要请求多少次,显得比

    2024年02月12日
    浏览(42)
  • el-upload实现上传文件夹

    背景:如图一所示,最下面有一个黄色上传文件按钮,为手动上传而且上传区域有上传文件和上传文件夹的区分 所以需要在点击了上传文件夹做特殊处理使得el-upload可以上传文件夹 01.在拖拽上传的区域绑定一个点击事件 handlePreview ,(注意不要直接绑定在el-upload区域,会被触

    2024年02月07日
    浏览(58)
  • el-upload上传文件携带额外参数

    在进行文件上传时,需要传递其他参数,比如下图中需要实现携带下拉框的参数 前端实现:将下拉框中的参数 传递到:data中  :data=\\\"{\\\'script_model\\\':script_model}\\\"    后端实现: 从post请求中获取携带的参数:  script_model = request.POST.get(\\\'script_model\\\')

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包