vue3文件上传

2024-05-06 17:44

本文主要是介绍vue3文件上传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

样式:

        可随意,通过获取组件toWake()方法即可

实现功能:

        限制上传文件类型

        限制上传文件大小

组件名称:

        autoUpload

实现代码:

<!-- 通用文件上传按钮,解决原生样式无法修改问题 -->
<!-- 参数介绍(可拓展) -->
<!-- accept:可选择的文件类型(用于input) -->
<!-- limitSize:可上传文件大小(单位kb) -->
<!-- acceptList:限制文件的类型数组(用于文件校验) -->
<!-- 配置方式 -->
<!-- <autoUpload ref='iconUpload' @returnFile="returnFile" sendType="icon"
accept="image/jpg,image/jpeg,image/png" :limitSize='2*1024' :acceptList="['jpg','jpeg','png']">
</autoUpload> -->
<!-- 唤起方式 -->
<!-- iconUpload.value.toWake() -->
<!-- 接收方式 -->
<!-- returnFile() --><template><input type="file" ref="uploadfile" name="uploadfile" :accept="accept" style="display:none;"@change="handleConfigFileSelect">
</template>
<script setup>import {ref} from 'vue'import { ElMessage } from 'element-plus'defineExpose({toWake})const props = defineProps({accept: {type: String,default: '*'},// 单位(kb)limitSize:{type:Number,default:1024},acceptList:{type:Array,default:[]},// 回调时的判断标识sendType:{type:String,default:'file'}})const uploadfile = ref(null)function toWake(){uploadfile.value.click()}const emits = defineEmits(['returnFile'])function handleConfigFileSelect(e) {let file = e.target.files[0];if (!file) {return}let isLimit = file.size / 1024  < props.limitSize;if (!isLimit) {ElMessage.warning('上传文件不能超过'+props.limitSize+'kb')return}let fileType = file.name.split('.')[file.name.split('.').length - 1]let isRational = props.acceptList.findIndex(item=>{return item==fileType})if (isRational==-1) {ElMessage.warning('上传文件格式不正确')return}emits('returnFile',file,props.sendType)}</script>

这篇关于vue3文件上传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964947

相关文章

关于HTML的多媒体标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的框架标签及内嵌框架

框架标签的代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Desc

关于HTML的表格标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的清单标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的图片标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的字体标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descripti

关于HTML的排版标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据

表单提交时候我们应该控制提交按钮,不能点击多次进行数据的重复提交。要不然就会有冗余的重复的数据在系统中,造成系统出现数据垃圾。jQuery很简单的就可以实现对表单提交按钮控制,下面就是相关的例子和代码。 <form action="${pageContext.servletContext.contextPath}/XXX/###" method="post" id="messag

2019年长沙前端技术分享大会圆满成功

做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 本文首发: 唐胡子俱乐部,授权发布! 摘要 长沙百名互联网前端程序员齐聚长沙互联网活动基地(唐胡子俱乐部)。 主办单位:唐胡子俱乐部 支持单位:芒果TV,拓维,湘邮,58到家,御泥坊,兴盛优选,中软国际,长海科技,长沙联通 时 间:2019年5月19日 ----------------------