效果:
组件:(比较多,这里就不写了,需要的留下邮箱我免费送[工作日])
出于某些原因,不会再免费赠送,需要的请自行下载:/download/u013361179/23272081
这里采用FormData上传,有多种上传方法,我们采用的是防止服务器脏数据的处理办法,也就是在点击确定后并没有真正上传到服务器,而是暂存,在没有点击提交表单之前的操作都是在操作暂存区的图片,在点击提交表单后才是真正上传
引入:
import ImgCropper from '@c/ImgCropper/ImgCropper'
components: {ImgCropper }
<ImgCropper :numLimit="5" :imgBaseUrl="IMAGEURL" @change="getImages($event)" @delete="deleteFile($event)" :introduceImg="coverList"></ImgCropper>
// 上传图片(临时上传,此时并没有上传到服务器)getImages (event) {this.fileList.push(event)}
// 删除图片deleteFile(file) {if (file && file.id) {this.fileList.map(item => {if (item.id === file.id) {this.fileList.splice(item, 1)}})} else {this.fileList = []}}
// 上传图片(上传图片到服务器,这个方法要在提交表单的时候再调用)batchUpload() {if (this.fileList.length) {const params = new FormData()this.fileList.map(item => {params.append('files', item.file)})const res = await ImgServe.uploadBatchImg(params)if (res.data.code === 200) {res.data.data.map(item => {this.updateList.push(item.filePath)})this.fileList = []} else {this.$message.warning(res.data.msg)}}}
注意:删除可以和后端商量好,此处的删除是前端提交后覆盖服务器表中数据,所以等于是提交图片后后端会清除掉表中原有图片,重新放进去目前提交的图片(这种方法节省了一个删除接口)