element ui实现简单上传图片、删除图片、预览图片
1、在element 的基础上做一个 图片上传功能:
<template> <div> <!-- list-type 图片的显示类型 --> <!-- action 图片要上次服务器的地址 --> <!-- on-preview 点击文件列表中已上传的文件时的触发的钩子函数(点击显示对应的预览图片) --> <!-- on-remove 点击删除图片的时候触发的钩子函数 --> <!-- headers 上传可能需要携带的请求头部参数(不需要可以不加) --> <el-upload :action="uploadURL" :on-preview="handlePreview" :on-remove="handleRemove" :headers="headerObj" :on-success="handleSuccess" list-type="picture" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> <!-- 图片预览弹框 --> <el-dialog title="图片预览" :visible.sync="previewDialogVisible" width="40%" class="dialog-picture" > <img :src="picPreviewPath" alt="" class="previewImg" /> </el-dialog> </div> </template> <script> export default { name: "Params", data() { return { // 图片上传地址 uploadURL: "http://timemeetyou.com:8889/api/private/v1/upload", // 图片上传组件的请求对象 headerObj: { Authorization: localStorage.getItem("token"), }, //定义一个数组来存放路径 pictureList: [], //预览的图片路径 picPreviewPath: null, //预览图片弹框的状态(默认关闭) previewDialogVisible: false, }; }, methods: { // 监听图片上传成功事件 handleSuccess(response) { //返回的对象 // console.log(response) //这是本地的图片路径 // console.log(response.data.url) //得到一个图片信息对象 临时路径 const picInfo = { pic: response.data.tmp_path }; // 将图片信息对象,push到pictureList数组中 this.pictureList.push(picInfo); }, //点击图片,利用弹框显示出预览图 handlePreview(file) { console.log("你点击了图片"); //console.log(file) //获取到本地图片路径 this.picPreviewPath = file.response.data.url; //显示出对应的预览图片 this.previewDialogVisible = true; }, handleRemove(file) { console.log("你删除了图片"); // 1.获取将要删除图片的临时路径 const filePath = file.response.data.tmp_path; // 2.从pictureList数组中,找到图片对应的索引值 const i = this.pictureList.findIndex((x) => x.pic === filePath); // 3.调用splice方法,移除图片信息 this.pictureList.splice(i, 1); console.log("删除后的" + this.pictureList); }, }, }; </script> <style lang="less" scoped> .dialog-picture { text-align: center; } .previewImg { width: 56%; } </style>