文件上传限制以及element 和 element accept上传使用

简介: 前言大家好,今天和大家分享一下上传文件如何实现上传限制,在制作项目时会遇见需要上传文件的功能,比如上传图片,上传音频,上传视频等等。但是点击上传文件打开文件夹时,文件夹内有好多格式的图片或音频,这个时候为了方便就可以进行文件格式的限制,只显示要上传的文件类型,下面我们来看看如何实现这个功能。

前言

大家好,今天和大家分享一下上传文件如何实现上传限制,在制作项目时会遇见需要上传文件的功能,比如上传图片,上传音频,上传视频等等。但是点击上传文件打开文件夹时,文件夹内有好多格式的图片或音频,这个时候为了方便就可以进行文件格式的限制,只显示要上传的文件类型,下面我们来看看如何实现这个功能。

 

一、实现效果

因为我上传的是音频,所以我设置了只能显示mp3和m4a两种格式的文件。

b9321ffe9af14073aa363ebba588f45e.png

二、具体实现

1.普通校验上传文件

代码如下(示例):

export function validUploadFile(type = 'img', file) {
  if (!file) {
    file = type;
    type = 'img'
  }
  const fileName = file.name;
  const m = fileName.match(/\.(\w+)(#|\?|$)/);
  const fileType = (m && m[1]).toString().toLowerCase();
  const allowHook = {
    video: ['mp4', 'ogv', 'ogg', 'webm'],
    audio: ['wav', 'mp3', 'ogg', 'acc', 'webm', 'amr'],
    file: ['doc', 'docx', 'xlsx', 'xls', 'pdf'],
    excel: ['xlsx', 'xls'],
    img: ['jpg', 'jpeg', 'png', 'gif']
  }
  const validType = (allowHook[type] || []).includes(fileType);
  if (!validType) {
    const supprtTypes = allowHook[type].join(',');
    return `只支持${supprtTypes}类型文件上传`;
  }
  if (fileName.indexOf('%') > -1 || fileName.indexOf('&') > -1) {
    return '上传文件名称不能带有字符"%","&"';
  }
  const isLt10M = file.size / 1024 / 1024 < 10;
  if (type === file && !isLt10M) {
    this.$message.error('上传资料大小不能超过 10MB!');
    return false;
  }
  return '';
}


2.el-upload + accept限制上传的文件格式

代码如下(示例):

html:

下面的代码看着多,其实用到的就一句**:accept=“this.acceptFile(‘video’)”**这个就是限制文件类型的方法。

 <el-upload
        :accept="this.acceptFile('video')"
          :data="{savePath:'technology'}"
          :disabled="disabled"
          :multiple="isNewAdd"
          action="url"
          :rowIdex="rowIndex"
          :before-upload="handleBeforeUpload.bind(null, 'file')"
          :on-success="handleUploadSuccess.bind(null, rowIndex)"
          :on-remove="handleUploadRemove.bind(null, rowIndex)"
          :on-preview="handlePreview.bind(null, 'file')"
          :file-list="selectRow.fileList"
          :headers="{ Authorization: token }"
        >
        <el-button :disabled="disabled" type="primary">点击上传</el-button>
</el-upload>

js如下:

下面的代码可以根据自己上传的文件选用,看你是上传音频视频还是图片。

export function acceptFile(e) {
  const allowHook = {
    video: '.mp4, .ogv, .ogg, .webm',
    audio: '.wav, .mp3, .ogg, .acc, .webm, .amr',
    file: 'doc,.docx,.xlsx,.xls,.pdf',
    excel: 'xlsx,.xls',
    img: '.jpg, .jpeg, .png, .gif'
  }
  if (e) {
    return allowHook[e];
  }
  let srt = null
  for (const k in allowHook) {
    srt += allowHook[k]
  }
  return srt
}

可以根据自己上传的文件格式来进行设置,从代码中拿取自己所需要的。

总结

本章主要是讲得是上传文件时选择文件格式的一个方法,是为了方便开发人员和用户的使用和操作,感谢您的阅读,希望本章能够帮助到您。

相关文章
|
前端开发 Java 程序员
el-upload上传组件accept属性限制文件类型(案例详解)
案例分享el-upload上传组件accept属性!欢迎留言沟通交流!
4653 0
el-upload上传组件accept属性限制文件类型(案例详解)
iframe 在线预览pdf、word、excel、ppt、txt、图片、视频
iframe 在线预览pdf、word、excel、ppt、txt、图片、视频
|
前端开发 开发者 UED
《从线性到二维:CSS Grid与Flex的布局范式革命与差异解析》
CSS Grid布局与Flex布局是现代前端开发中不可或缺的两大布局技术。CSS Grid作为二维网格系统,擅长复杂页面结构和响应式设计,通过网格容器、轨道与单元格实现精确的空间划分与元素定位。Flex布局则专注于一维排列,适用于导航栏、列表等内容驱动场景,提供灵活的对齐与空间分配能力。两者各有优势,可独立或结合使用,满足不同布局需求。掌握它们的核心概念与应用技巧,能显著提升开发效率,打造精美高效的网页布局。
391 18
Element UI 上传文件 el-upload —— 手动上传文件,限制上传文件数量,文件类型校验等
Element UI 上传文件 el-upload —— 手动上传文件,限制上传文件数量,文件类型校验等
5404 0
|
JavaScript
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
这篇文章介绍了如何在Vue 2或Vue 3项目中实现一个自定义的全局指令`v-dragSwitch`,用于创建可以任意方向拖拽并悬浮的元素,同时包含边界处理的逻辑。
4618 2
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
|
JavaScript
vue3,使用watch监听props中的数据
【10月更文挑战第3天】
4324 2
|
JavaScript API
vue3父子组件相互调用方法详解
vue3父子组件相互调用方法详解
10181 10
|
JavaScript
vue父子组件传值,父组件内容更新子组件内容不实时更新
vue父子组件传值,父组件内容更新子组件内容不实时更新
4637 0
element el-table 设置fixed导致行错乱问题
文章讨论了在使用Element UI的`el-table`组件时,设置固定列(`fixed`)导致行错乱的问题,并提供了解决方案。问题产生的原因是当表格底部有滚动条而固定列底部没有滚动条时,行无法对齐。解决办法是在表格中设置`padding-bottom`的内边距与滚动条高度相等,确保固定列和非固定列的行能够对齐。
5246 0

热门文章

最新文章