<el-upload
:on-preview="handlePreview"
:on-remove="handleRemove"
list-type="picture"
action="https://jsonplaceh.com/posts/"
:file-list="add_ObjDetails"
style="display: inline-block; margin-left: 30px"
:http-request="imgUpload"
:before-upload="beforeAvatarUpload"
:limit='1'
:on-exceed="handleExceed"
:before-remove="beforeRemove"
accept=".jpg,.jpeg,.png,.JPG,.JPEG"
>
<el-button
size="small"
type="primary"
>上传图片</el-button>
</el-upload>
<script>
data(){
return{
add_ObjDetails=[]
}
},
//点击文件列表中已上传的文件时的钩子
handlePreview(file) {
console.log("file--->", file);
},
// 删除图片
handleRemove(file, fileList) {
// 点击删除图片,获取图片文件file,
// 筛选出图片文件file.url和图片数组的url一致的数据
// 删除掉这个数据
this.add_ObjDetails.filter((item,index) => {
if (item.url == file.url) {
this.add_ObjDetails.splice(index, 1);
}
});
},
//上传图片
imgUpload(e) {
// e 图片文件
let file = e.file;
// new 一个FormData 表单
let FormDatas = new FormData();
// 加一个 键 multipartFile值是图片文件
FormDatas.append("multipartFile", file);
// 把FormDatas作为参数调接口 图片接口的作用:把文件类型的图片转为公司链接形式的图片
api.CommonUpload_uploadImagesTX(FormDatas, "media/").then((res) => {
if (res.status == 200) {
console.log("res.data", res.data);
// 创造一个对象 键为url 值为后端返回的img链接
let imgObj = {
url: res.data,
};
// 把创造的对象加到图片数组中
this.add_ObjDetails.push(imgObj);
}
});
},
handleExceed(files,fileList){
this.$message.warning(`当前限制选择 1 个图片,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
//限制上传图片大小
beforeAvatarUpload(){
//待补充
}
</script>
el-upload里Api的详细介绍
on-preview:点击文件列表中已上传的文件时的钩子
on-remove:文件列表移除文件时的钩子
list-type="picture":文件列表的类型(比如编辑查看已上传的图片,展开形式以图片形式展开)
![](https://img-blog.csdnimg.cn/img_convert/81ae69a3994f91a0a63ff8d1983bef98.png)
list-type="picture-card":文件列表的类型(比如编辑查看已上传的图片,展开形式以卡片形式展开),同上的区别是,为picture时,如果上传一张以上的图片,在再次点击编辑查看时,图片会重叠甚至图片丢失看不到,且只能一次性全删
![](https://img-blog.csdnimg.cn/img_convert/49d59cc599bece297bdd06713017eff7.png)
action:必选参数,表示上传的地址
limit:允许上传的最大个数
on-exceed:可通过设置limit和on-exceed来限制上传文件的个数和定义超出限制时的行为。
![](https://img-blog.csdnimg.cn/img_convert/9026e4ca842c8852dd4972d3af04de1d.png)
before-remove:用来阻止文件移除操作。删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。this.$confirm弹出框具体使用方法
file-list:上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}],类型是一个数组
http-request :覆盖默认的上传行为,可以自定义上传的实现的函数
before-upload:上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。主要用它来限制用户上传的图片格式和大小
accept:接受上传的文件类型(thumbnail-mode 模式下此参数无效),如图所示,接受上传文件的类型会自动同步在自定义文件内,如需上传accept之外的文件,点击所有文件即可,这个属性没太大作用,可以不写
![](https://img-blog.csdnimg.cn/img_convert/ea1977746bd71619d178c65a15d7d954.png)
el-button配合upload点击按钮上传图片功能
在编辑和新增共同的保存点击事件中
![](https://img-blog.csdnimg.cn/img_convert/a48a09104efd25c41382b7a755c3a659.png)
首先遍历数组通过map将数组里每一项的url返回出来,生成新数组imgList,此时的imgList就是所有项为图片url的数组。
由于后端规定url需传的参数为字符,此时我们需要将imgList这个数组通过join方法转成字符串返回给this.form.regulationsImg,最后调保存的接口即可。