vue上传组件before-upload失效

前言

el-upload组件设置:auto-upload="false"后,自带的before-upload属性不会触发,需要在手动上传前编写校验代码

关键代码

// 选择文件
uploadChange(file) {
  if (!this.beforeUpload(file)) {
	this.$refs.uploadCom.clearFiles();
	return;
  }
  const uploadData = new FormData();
  if (file.raw) {
	uploadData.append('file', file.raw);
  }
  // TODO调用后台上传接口,将uploadData作为参数传给后台
}
// 自己写的文件校验方法
beforeUpload(file) {
  const acceptTypes = [];// 将支持的文件类型配置在这个数组中
  const isFormat = acceptTypes.includes(file.raw.type);
  const maxsize = 10;// 定义文件大小不超过10M
  const isLtMaxsize = file.size / 1024 / 1024 < maxsize;
  if (!isFormat) {
	this.$message.error('导入文件格式错误,请重新选择文件导入');
  }
  if (!isLtMaxsize) {
	this.$message.error(`文件大于${maxsize}M,请重新选择文件导入`);
  }
  return isFormat && isLtMaxsize;
}

注意事项

给el-upload组件设置属性accept=".xlsx,.xls"并不能限制上传文件类型,只是默认显示指定类型的文件,在电脑上选择文件那里还是可以手动改为所有类型,去选择其他类型的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Vue中使用el-upload组件进行图片上传并预览的方法如下: 首先,在父级组件中引入uploadImg组件,并在el-form-item中使用upload-img组件进行图片上传。\[1\] 然后,在el-upload组件中将auto-upload设置为false,这样不会执行自动上传。同时,给on-change事件绑定一个方法imgSaveToUrl,在该方法中生成可用于本地预览的URL。\[2\] 在imgSaveToUrl方法中,可以通过event.raw获取上传的图片实体,然后根据不同的浏览器生成对应的本地URL。\[3\] 最后,将生成的本地URL赋值给一个变量,用于在页面上展示预览图片。同时,根据需要,可以控制显示和隐藏上传组件和本地预览组件的状态。 这样,就可以实现在Vue中使用el-upload组件进行图片上传并预览的功能了。 #### 引用[.reference_title] - *1* [vue3+el-upload上传图片封装组件](https://blog.csdn.net/qq_39536826/article/details/130051704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Vue中通过el-upload组件实现上传前预览本地图片](https://blog.csdn.net/zrcj0706/article/details/103136634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值