【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
      }
    }
  },
}
相关推荐
开开心心就好21 分钟前
批量提取PDF中的图片,直接导出原图
前端·javascript·支持向量机·智能手机·pdf·html·启发式算法
Setsuna_F_Seiei3 小时前
前端转型 Agent 开发 05 之 Agent Hooks 与 Checkpointer(让 Agent 从全自动转变人为可掌控)
前端·agent·ai编程
百万蹄蹄向前冲4 小时前
风扇转了一晚上MVP专家团翻车事故
前端·人工智能
默_笙4 小时前
🏛 给 AI 配一间办公室:Harness Engineering 六大模块与它的实现
前端·javascript
linux_cfan6 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
kyriewen6 小时前
我扒了 10,221 条 JD:腾讯技术岗 75% 在要 AI
前端·人工智能·ai编程
郑州光合科技余经理7 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
IT_陈寒8 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
Blanche15008 小时前
利用 RAG 为答疑机器人扩展知识范围
前端
天若有情6738 小时前
【纯前端小工具】公历生日转农历,批量查询每年农历生日对应的公历日期(GitHub Pages在线直接用)
前端·javascript·github pages·农历转换·lunisolar·网页小工具