方法1:
html:
<div v-if=\'imgsback.length>0\' class="flex"> <div class="img-box" v-for="(item, i) in imgsback" :key=\'i\' > <img class="img" :src="item" alt=""> <span @click="delimgback(i)"><i class="el-icon-delete"></i></span> </div> </div> <div class="img-file" v-if=\'imgsback.length < sizeback\'> <input type="file" id=\'files\' @change=\'fileChangeback($event)\'> <label for="files"></label> </div>
数据:
data(){ return{ imgsback: [], // 图片预览地址 imgfilesback: [], // 图片原文件,上传到后台的数据 sizeback: 1 , // 限制上传数量 }
方法methods:(每上传一张图片就调用一次接口将数据传给后台)
/* 图片上传 */ fileChangeback(e) { // 加入图片 // 图片预览部分 var _this = this var event = event || window.event; var file = event.target.files var leng=file.length; for(var i=0;i<leng;i++){ var reader = new FileReader(); // 使用 FileReader 来获取图片路径及预览效果 _this.imgfilesback.push(file[i]) reader.readAsDataURL(file[i]); reader.onload =function(e){ _this.imgsback.push(e.target.result); // base 64 图片地址形成预览 }; } // 图片上传给后台部分 var file = _this.imgfilesback[0]; let form = new FormData(); form.append(\'imgFile\',file); var vm = this; _this.$axios({ url: \'/tryOut/upload\', method: \'post\', data: form, headers: {\'content-Type\':\'multipart/form-data\'} }).then((re)=>{ console.log(\'re\',re) vm.imgurl = re.data.data.url var imglist = vm.imglist; imglist.push(re.data.data) vm.imglist = imglist; console.log(\'vm.imglist\',vm.imglist) }).catch((err)=>{ console.log(err) }) },
//删除图片的方法
delimgback(i){
this.imgfilesback.splice(i, 1)
this.imgsback.splice(i, 1)
},
方法2methods(图片预览和图片数据上传是两个方法)
/* 图片上传--预览 */ fileChangeback(e) { // 加入图片 // 图片预览部分 var vm = this var event = event || window.event; var file = event.target.files var leng=file.length; for(var i=0;i<leng;i++){ var reader = new FileReader(); // 使用 FileReader 来获取图片路径及预览效果 vm.imgfilesback.push(file[i]) reader.readAsDataURL(file[i]); reader.onload =function(e){ vm.imgsback.push(e.target.result); // base 64 图片地址形成预览 }; } }, // 上传图片给后台 updateImgToBack(){ var url = \'/zl/upload/\' + this.checkedCatagoryId let form = new FormData(); this.imgfilesback.forEach((item,index) =>{ form.append(\'file\',item); }) var vm = this this.$axios.post(url,form).then(function(res){ if(res.data.flag){ vm.$message({ message: res.data.message, type: \'success\' }); vm.updataCategoryShow = false vm.reload() } }).catch((err)=>{ console.log(err) }) },