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日
    浏览(36)
  • el-upload实现自定义携带参数上传文件( :http-request 方式)

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

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

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

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

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

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

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

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

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

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

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

    2024年02月12日
    浏览(26)
  • el-upload 文件上传组件的使用

    element-ui官网 element ui=upload上传组件 Upload 上传文件这个功能是我们在企业实际开发当中使用频率是非常高的这样一个文件上传的功能,,element ui组件组也给我们提供了上传的组件。所有我们一定要熟悉掌握它 使用之前先进行一下element ui的安装和配置 打开终端=输入npm i elem

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

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

    2024年02月11日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包