el-upload 限制文件上传数量、类型

el-upload 限制文件上传数量、类型
1.限制文件上传数量为20
需要添加 :limit=“20” ,以及 on-exceed 属性。limit属性用来控制文件上传的数量,on-exceed 是当上传的文件超出限制时,触发的钩子函数。el-upload代码:

<el-upload
    v-model:file-list="fileList"
    class="upload-demo"
    action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
    multiple
    :on-preview="handlePreview"
    :on-remove="handleRemove"
    :before-remove="beforeRemove"
    :before-upload="beforeUpload"
    :limit="20"
    :on-exceed="handleExceed"
  >
    <el-button type="primary">Click to upload</el-button>
    <template #tip>
      <div class="el-upload__tip">
        jpg/png files with a size less than 500KB.
      </div>
    </template>
  </el-upload>

script里:

function handleExceed(){
    //提示最多只能上传20个
    warn('最多上传20个文件!');
}

2.限制文件上传格式
需要用到 accept 属性,accept可以控制,弹出的本地选择文件中的自定义选择:
accept=“.jpg,.txt"这样自定义选择项,只有“jpg”、"text"格式的文件能被选择:

<el-upload
    v-model:file-list="fileList"
    class="upload-demo"
    action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
    multiple
    :on-preview="handlePreview"
    :on-remove="handleRemove"
    :before-remove="beforeRemove"
    :limit="20"
    :on-exceed="handleExceed"
    accept=".jpg,.txt"
  />

在这里插入图片描述

而选择”所有文件“,则相当于没有限制类型,这时候应该在文件上传成功之前的钩子函数里,做一下限制。这里auto-upload(是否自动上传)是true,可以用before-upload,当自动上传关掉以后,before-upload是没有效果的。

function beforeUpload(file){
    // 截取上传的文件名后缀
    let fileExtName = file.name.substring(file.name.lastIndexOf(;.) + 1);
    if(
        fileExtName === '.jpg' &&
        fileExtName === '.txt'
    ){
       //进行上传成功的一些操作;
        console.log('file',file);
    }else{
         // 提醒只能上传的文件类型
        warn('只能上传.jpg、.txt类型的文件!');
        return;
    }
}

其他完整案例

         <el-upload  
             style="display: inline-block;" 
             class="upload-demo" 
             accept=".pdf,.jpg,.png"
             action="Fake Action" 
            :before-upload="uploadSuccess" 
            :show-file-list="false" 
            :file-list="fileList">
            <el-button size="mini" type="primary">点击上传</el-button>
            <span slot="tip" class="el-upload__tip">支持pdf,jpg,png格式文件</span>
          </el-upload>

    uploadSuccess(file) {
        // 截取上传文件的后缀名
        let fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
        // 判断文件名的类型
        if (fileType === 'pdf' || fileType === 'jpg' || fileType === 'png') {
          const fd = new FormData();
          fd.append('file', file)
          const config = {
            headers: {
              'Content-Type': 'multipart/form-data'
            }
          }
          axios.post(window.gapi + "/api/gemp/risktip/manage/upload/v1", fd, config).then((res) => {
            if (res.data.status === 200) {
              this.form.accessoryName = res.data.data
              this.isUpload = true
            }
          }).catch((err) => {
            console.log(err)
          })
        } else {
          this.$message.error('上传文件仅支持pdf,jpg,png格式');
        }

      },

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用 element-ui 的 el-upload 组件时,可以通过设置 accept 属性来限制上传的文件类型。accept 属性可以接受一个字符串,用于指定可接受的 MIME 类型或文件扩展名。 例如,如果你只想允许上传图片文件,可以这样设置: ``` <el-upload class="upload-demo" action="/upload" :accept="'image/*'" :on-success="handleSuccess" :before-upload="beforeUpload"> <el-button size="small" type="primary">点击上传</el-button> </el-upload> ``` 上面的代码中,accept 属性的值为 `image/*`,表示只接受 MIME 类型为 image 开头的文件。你也可以使用具体的 MIME 类型或文件扩展名来限制文件类型,例如: - `image/png`:只接受 PNG 格式的图片文件。 - `.jpeg,.jpg,.png`:只接受扩展名为 jpeg、jpg 或 png 的图片文件。 需要注意的是,accept 属性并不是绝对可靠的,因为用户可以手动修改文件的 MIME 类型或扩展名。因此,你在后端也需要对上传的文件类型进行校验。 ### 回答2: el-upload是基于Element UI开发的文件上传组件,可以方便地实现文件的上传和预览功能。 在el-upload组件中,可以通过设置属性accept来限制文件的类型。accept属性的值可以是一个字符串或者一个字符串数组。当属性值为字符串时,表示限制上传的文件类型为指定的单一类型;当属性值为字符串数组时,表示限制上传的文件类型为指定的多个类型中的任意一种。 例如,如果我们想要限制只能上传图片类型的文件,我们可以这样设置accept属性: <el-upload accept="image/*" action="/upload" :before-upload="beforeUpload" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> 上述代码中,accept属性的值为"image/*",表示只能上传图片类型的文件。"image/*"是一个通配符,表示允许上传以"image/"开头的文件类型,例如"image/png"、"image/jpeg"等。 如果我们想要限制只能上传图片和视频类型的文件,我们可以这样设置accept属性: <el-upload :accept="['image/*', 'video/*']" action="/upload" :before-upload="beforeUpload" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> 上述代码中,accept属性的值为一个字符串数组,包含两个元素"image/*"和"video/*",表示只能上传以"image/"开头或者以"video/"开头的文件类型,即图片和视频类型的文件。 通过设置accept属性,我们可以灵活地限制el-upload组件的文件类型,以满足我们的需求。 ### 回答3: el-uploadElement UI 中的上传组件,用于实现文件上传功能。它提供了很多参数和选项来限制上传的文件类型。 首先,el-upload 组件通过设置 accept 属性来限制文件类型。可以通过设置 accept 属性为特定的文件扩展名或 MIME 类型限制上传的文件类型。例如,设置 accept 属性为 "image/*" 可以只允许上传图片文件,设置为 "video/*" 可以只允许上传视频文件。 其次,el-upload 组件还可以通过设置 before-upload 属性来对文件进行进一步的限制。before-upload 属性接收一个函数,该函数会在文件上传之前被调用。在该函数中,我们可以通过判断文件的类型、大小等属性来决定是否继续上传。如果函数返回 false,则上传被中断,文件不会被上传。 除了以上两种方式,el-upload 还提供了其他一些属性和事件来限制文件类型。例如,通过设置 limit 属性可以限制一次只能上传的文件数量;通过设置 on-exceed 属性可以限制文件数量超过限制时的行为;通过设置 file-list 属性可以限制同时显示的文件数量。 总的来说,el-upload 提供了多种方式来对文件类型进行限制,可以通过设置 accept 属性、before-upload 属性、limit 属性等来满足不同的需求,并实现对文件上传的精确控制和限制

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值