自定义校验方法,由于个人项目是,分状况,能够选择是否有图,因此我定义了一个变量hasFmt,
当他为false的时候,才会要求上传,走这个校验方法,rules里声明这个方法app
var valiIcon = (rule, value, callback) => { // 图片验证 if (!this.hasFmt) { callback(new Error('请上传图片')); } else { callback(); } icon:[ {required:true, validator: valiIcon, trigger: 'change' } // 图片验证 ]
根据状况去切换hasFmt的值 就能够控制是否校验失败啦~~
这就是校验图片的思路了,是否是很简单呢~~~post
再来讲说表单带着图片一块儿上传~ui
fileChange(file,fileList){ this.bannerForm.filename = file.name; this.bannerForm.file = file.raw; console.log(file.raw) if(fileList.length>0){ this.hasFmt = true; } },
例如,file change的时候,当fileList有值,就能够判定已经选取了图片了,讲file流保存好,
(我这里是:this.bannerForm.file = file.raw;)而且能够把hasFmt变为ture啦,
再者,file remover的时候 回显的时候, 等等,都要根据状况改变hasFmt的值,来达到图片的校验
上传是这样的:this
this.$refs.bannerForm.validate((valid) => { if(valid){ let param = new FormData(); this.toBannerBtn = true; param.append('file',this.bannerForm.file,this.bannerForm.filename); param.append('tokenId',this.$store.state.user.tokenId); param.append('titleShort',this.bannerForm.title_short); param.append('bannerType','1'); param.append('linkId',this.bannerForm.link); param.append('articleId',this.bannerForm.articleId); console.log(param) this.$post('bannerInfo/save',param).then(res =>{ // console.log(res); if(res.code == 0){ this.$message({ type: 'success', message: res.msg }); setTimeout(() => { this.newsList(); }, 1000); this.bannerForm={}; this.bannerDialog = false; }else{ this.$message({ type: 'warning', message: res.msg?res.msg:'出错了' }); } this.toBannerBtn = false; }) } })
表单校验后,就能够进行上传啦,采用的是new FormData();取值上传的,要注意 ,取消其序列号,我在公共的上传方法里封装好了,因此这里就直接调用啦~code
小可爱们,若是以为学到了一点点,麻烦点个赞哟,灰常感谢啦~orm