淘先锋技术网

首页 1 2 3 4 5 6 7

搭建vue后台管理系统的时候碰到的上传图片到后台接口

template的代码

<el-upload
    //上传的地址
	action="#"
    //最大数量
	:limit='9'
    //成功的回调
	:on-success="handlePicSuccess"
    //超出限制数量的回调
	:on-exceed="exceedFile"
    //上传时验证文件的格式
	:before-upload="beforeUploadPic"
	list-type="picture-card"
	multiple
	ref="pictureUpload">
	<i slot="default" class="el-icon-plus"></i>
	<div slot="file" slot-scope="{file}">
		<img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
		<span class="el-upload-list__item-actions">
            <span v-if="!disabled" 
            class="el-upload-list__item-delete" 
            // 删除
            @click="handlePicRemove(file)">
				<i class="el-icon-delete"></i>
			</span>
		</span>
	</div>
</el-upload>

js的代码

// 图片上传成功把图片路径push进去数组中
handlePicSuccess(response){
	if(response.status==200){
	    this.uploadPic.push(response.filepath)
	}
},
// 文件超出个数限制时的钩子
exceedFile(files, fileList) {
	this.$message.warning(`只能选择 9 个文件,当前共选择了 ${files.length + fileList.length} 个`);
},
// 验证图片格式
beforeUploadPic(file){
	if (
		[
			'image/png',
			'image/jpg',
			'image/jpeg'
		].indexOf(file.type) === -1
	) {
	    this.$message.error('请上传正确的视频格式')
		return false
	}
},
// 删除图片
handlePicRemove(file) {
	let Picpath = file.response.filepath; 
	this.$refs.pictureUpload.handleRemove(file)
	this.uploadPic.forEach(item => {
		if(item===Picpath){
			this.uploadPic.splice(item, 1)
		}
	})
},

data中定义的数据

uploadPic:{}    //存储上传成功后接口返回的图片数据

总的来说就是运用element-ui中的组件,对电脑的文件进行上传,然后根据后端的接口,如果上传成功会返回一个值,然后我们根据需求,在js中对数据进行处理,如果成功上传了,在上传成功的钩子里获取数据然后赋值到data中即可。