【vue2+elementui】记录el-upload上传文件时控制文件格式,并在上传文件格式不合规则时做出提示且阻止文件上传

使用accept设置允许上传的文件格式,eg: accept=".xls,.xlsx,.csv,.et,.ett,.xlt" 。其实设置了accept我感觉电脑就已经自动把格式不符合的文件过滤掉了,但是为了保险还是再加个判断吧

使用before-upload来判断当前上传文件格式是否符合要求,因为:before-upload是上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传

javascript 复制代码
<div class="batch-import-contain">
	<el-button type="primary" size="mini">下载模板</el-button>
	<el-upload
		class="upload-demo"
		drag
		action="https://jsonplaceholder.typicode.com/posts/"
		:accept="accept"
		:multiple="false"
		:file-list="fileList"
		:on-change="onchange"
		:before-upload="beforeUpload"
	>
		<i class="el-icon-upload"></i>
		<div class="el-upload__text">
			<p>点击或将文件拖拽到这里上传</p>
			<p>支持扩展名:.xls .xlsx .csv .et .ett .xlt...</p>
		</div>
	</el-upload>
</div>

before-upload的参数file:name里面可以截取出当前上传文件的后缀

javascript 复制代码
export default {
  name: 'batchImport',
  data() {
    return {
      fileList: [],
      accept: '.xls,.xlsx,.csv,.et,.ett,.xlt',
    }
  },
  methods: {
    onchange(file, fileList) {
      if(fileList.length > 1) {
        fileList.splice(0, 1)
      }
      this.fileList = fileList
    },
    beforeUpload(file) {
      const filename = file.name
      const postfix= filename.substring(filename.lastIndexOf('.'))
      if(!this.accept.includes(postfix)) {
        EMessage('文件类型仅支持.xls .xlsx .csv .et .ett .xlt格式', 'warning')
        return false
      }
    }
  },
}
相关推荐
程序员小寒2 小时前
JavaScript设计模式(八):命令模式实现与应用
前端·javascript·设计模式·ecmascript·命令模式
wgod2 小时前
new AbortController()
前端
UXbot2 小时前
UXbot 是什么?一句指令生成完整应用的 AI 工具
前端·ai·交互·个人开发·ai编程·原型模式·ux
棒棒的唐2 小时前
WSL2用npm安装的openclaw,无法正常使用openclaw gateway start启动服务的问题
前端·npm·gateway
哔哩哔哩技术2 小时前
使用Compose Navigation3进行屏幕适配
前端
Z_Wonderful3 小时前
在 Next.js 中,使用 [id] 或 public 作为文件夹或文件名是两种完全不同的概念,分别对应 动态路由 和 静态资源托管
javascript·网络·chrome
咬人喵喵3 小时前
E2.COOL 平台深度解析:从特效分类到实战操作指南
前端·编辑器·svg
RisunJan4 小时前
Linux命令-named-checkzone
linux·前端
小陈工4 小时前
Python Web开发入门(十):数据库迁移与版本管理——让数据库变更可控可回滚
前端·数据库·人工智能·python·sql·云原生·架构
吹晚风吧4 小时前
解决vite打包,base配置前缀,nginx的dist包找不到资源
服务器·前端·nginx