Vue 使用 ElementUi el-upload 手动上传文件限制上传文件类型

<el-upload
  class="upload-demo"
  action="#"
  multiple
  :show-file-list="false"
  :limit="3"
  :on-change="handleChange"
  >
  <el-button size="small" type="primary">点击上传文件</el-button>
</el-upload>


// 文件状态改变时
handleChange(file) {
	// 结构获取文件名
	let { name } = file
	// 正则校验文件格式
	let result = /^.zip|.rar|.word|.excel|.ppt|.pdf|.png$/.test(
	// 截取文件名后缀 例:.zip
	// 注解:
	// substring() 截取字符串中介于两个指定下标之间的字符
	// toLowerCase()  将字符串转换为小写
	// lastIndexOf(".") 返回一个指定的字符串值最后出现的位置
	 name.substring(name.lastIndexOf(".")).toLowerCase()
	)
	if(!result) {
		this.$message.error('上传文件格式不符合要求')
		return
	}
}
ElementUIel-upload组件的使用方法如下: 若要支持同时上传多个图片,可利用el-upload组件的多选文件功能,配置`multiple`参数为`true`。不过该组件默认会将多选的文件分多次上传,会产生多次上传请求。若后台接口要求一次请求上传多个文件,可按如下方法操作:通过配置`file-list`、`auto-upload`设置为`false`,关闭组件的自动上传功能;`file-list`配置一个数组用于接收上传文件列表;`multiple`设置为`true`表示支持多选文件;`accept`配置上传文件的类型;`limit`配置最大允许上传个数;最后通过点击按钮手动调用上传函数`submitUpload`,创建一个`FormData`把`fileList`的文件存进去 [^1]。 实现上传限制数量且超出不显示上传按钮的方法,文档中虽未直接提及,但可通过逻辑实现。在模板中使用`v-if`或者`v-show`指令根据已上传文件数量和限制数量的比较结果来控制上传按钮的显示与隐藏。示例代码如下: ```vue <template> <div> <el-upload ref="uploadRef" :action="uploadUrl" :multiple="true" :limit="maxUploadCount" :file-list="fileList" :auto-upload="false" :on-change="handleChange" accept="image/*" > <el-button v-if="fileList.length < maxUploadCount" size="small" type="primary">点击上传</el-button> </el-upload> <el-button @click="submitUpload" size="small" type="success">提交上传</el-button> </div> </template> <script> export default { data() { return { uploadUrl: 'your_upload_api_url', maxUploadCount: 3, fileList: [] }; }, methods: { handleChange(file, fileList) { this.fileList = fileList; }, submitUpload() { const formData = new FormData(); this.fileList.forEach(file => { formData.append('files', file.raw); }); // 这里调用上传接口 console.log('上传数据:', formData); } } }; </script> ``` 在上述代码中,通过`v-if="fileList.length < maxUploadCount"`判断是否显示上传按钮,当上传文件数量达到限制时,上传按钮将不再显示。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值