Element组件beforeUpload上传前限制失效问题怎么解决

开发技术 作者:iii 2024-05-09 19:00:01
本篇内容介绍了“Element组件beforeUpload上传前限制失效问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大...

本篇内容介绍了“Element组件beforeUpload上传前限制失效问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    Element上传组件beforeUpload上传前限制失效

    在before-upload(上传文件之前的钩子 参数为上传的文件 若返回 false 或者返回 Promise 且被 reject 则停止上传)钩子里去做判断 这里有一个坑

    当你设置了 :auto-upload="false" 的时候, 这个钩子是不会被触发的,因此也可以在on-change中做判断。

    beforeUpload(file, fileList) {
       if (file.size / (1024 * 1024) > 500) {  // 限制文件大小
         this.$message.warning(`当前限制文件大小不能大于500M`)
         return false
       }
       
       let suffix = this.getFileType(file.name) //获取文件后缀名
       let suffixArray = ['jpg', 'png', 'jpeg', 'gif'] //限制的文件类型,根据情况自己定义
       if (suffixArray.indexOf(suffix) === -1) {
         this.$message({
           message: '文件格式错误',
           type: 'error',
           duration: 2000
         })
           this.$refs.uploadPhoto.handleRemove(file);
       }
       return suffixArray
     },
     getFileType(name) {
       let startIndex = name.lastIndexOf('.')
       if (startIndex !== -1) {
         return name.slice(startIndex + 1).toLowerCase()
       } else {
         return ''
       }
     }

    element中before-upload不起作用的问题 、on-change上传文件大小限制

    1、因为设置了:auto-upload="false" 

    :on-change="changeImgClick"方法 和 before-upload 发生了冲突 导致before-upload 方法不起作用

    如果有:auto-upload="false" 属性就要用:on-change 方法监听

    2、on-change上传文件大小限制

    当文件超过20MB的时候让他提示文件大小不能超过20MB,请重新上传。

    下面我们来看代码:

    <el-upload
       class="upload-demo" ref="upload" name="upload" :action="action()"
        :on-change="(file, fileList) => {handleChange(file, fileList, scope);} "
        :on-remove=" (file, fileList) => {handleRemove(file, scope);}"
        :file-list="scope.row.fileList"
        :auto-upload="false"
         >
           <el-button  slot="trigger" size="mini" type="primary" v-if="scope.row.fileList.length == 0" >上传文件</el-button>
    </el-upload>

    首先在el-upload的:on-change事件里的handleChange的方法中可以获取上传文件的大小

    handleChange(file, fileList, scope) {
            //获取上传文件大小
          let imgSize = Number(file.size / 1024 / 1024);
     
          if (imgSize > 20) { 
            this.$msgbox({
              title: "",
              message: "文件大小不能超过20MB,请重新上传。",
              type: "warning",
            });
            this.materialList[scope.$index].fileList.splice(scope.index, 1);
            return;
          } 
     
           //后面可以不用 我自己也没有用到
          this.text = "上传中";
            
          this.loading = true;
          this.materialList[scope.$index].fileList.push(file);
          let data = new FormData();
          data.append("files", file.raw);
          uploadFile(data, scope.row.materialName).then((response) => {
            if (response.success) {
              this.loading = false;
              this.listedFiles[scope.$index] = response.result[0].id;
            } else {
              this.loading = false;
              this.msgError(response.message || "操作失败");
            }
          });
        },

    “Element组件beforeUpload上传前限制失效问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注捷杰建站网站,小编将为大家输出更多高质量的实用文章!

    原创声明
    本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    本文链接:http://www.jiecseo.com/news/show_25751.html
    element