若依图片上传到服务器,前端显示图片

2023-11-06

效果图如下:

 前端代码:

//-----------table显示图片
 <el-table-column label="图片地址" align="center" prop="url" >
        <template slot-scope="scope">
            <el-image
              style="width: 100px; height: 100px"
              :src="pjtUrl+scope.row.url"
              :fit="fit">
            </el-image>
        </template>
 </el-table-column>
//-----------新增或修改方法里上传图片
  <el-form-item label="图片地址" prop="url" label-width="40">
              <el-upload
                :action="imgUpload.url"
                :headers="imgUpload.headers"
                list-type="picture-card"
                :limit="limit"
                :on-exceed="handleExceed"
                :on-success="handlePictureSuccess"
                :before-upload="beforeAvatarUpload"
                :on-preview="handlePictureCardPreview"
                :file-list="fileList"
             >
                <i class="el-icon-plus"></i>
              </el-upload>
              <el-dialog :visible.sync="dialogVisible">
                <img width="100%" v-if="imageUrl" :src="imageUrl" alt="">
              </el-dialog>
 </el-form-item>
//--------导入token
import { getToken } from "@/utils/auth";

//--------data参数
  pjtUrl: process.env.VUE_APP_BASE_API,
  // 图片数量限制
  limit: 1,
  //页面上存的暂时图片地址List
  fileList: [{url: ""}],
  //图片地址
  imageUrl: "",
  dialogVisible: false,
  imgUpload: {
  // 设置上传的请求头部
  headers: {
      Authorization: "Bearer " + getToken()
   },
   // 图片上传的方法地址:
     url: process.env.VUE_APP_BASE_API + "/business/picture/articleImg",
  },
//-----------方法
 // 表单重置
  reset() {
      this.fileList = undefined;//加的是这一行
      this.form = {
        id: null,
        name: null,
        url: null
      };
      this.resetForm("form");
    },
   /** 修改按钮操作 */
    handleUpdate(row) {
      this.reset();
      const id = row.id || this.ids
      getPicture(id).then(response => {
        this.fileList = [{ url: process.env.VUE_APP_BASE_API + response.data.url}]//加的是这一行
        this.form = response.data;
        this.open = true;
        this.title = "修改图片信息";
      });
    },
  /** 提交按钮 */
    submitForm() {
      this.form.url = this.imageUrl; // 注:重要(用于添加到数据库),加的是这一行
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            updatePicture(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addPicture(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },

  //图片上传前的相关判断
    beforeAvatarUpload(file) {
      const isJPG = file.type === 'image/jpeg' || file.type == 'image/png';
      const isLt2M = file.size / 1024 / 1024 < 5;
      if (!isJPG) {
        this.$message.error('上传头像图片只能是 JPG/PNG 格式!');
      }
      if (!isLt2M) {
        this.$message.error('上传头像图片大小不能超过 5MB!');
      }
      return isJPG && isLt2M;
    },
    //图片预览
    handlePictureCardPreview(file) {
      this.imageUrl = file.url;
      this.dialogVisible = true;
    },
    //图片上传成功后的回调
    handlePictureSuccess(res, file) {
      //设置图片访问路径 (url 后台传过来的的上传地址)
      this.imageUrl = file.response.url;
    },
    // 文件个数超出
    handleExceed() {
      this.$modal.msgError(`上传链接LOGO图片数量不能超过 ${this.limit} 个!`);
    },

后端代码:

   /**
     * 缩略图上传
     */
    @Log(title = "预览缩略图", businessType = BusinessType.UPDATE)
    @PostMapping("/articleImg")
    public AjaxResult uploadFile(MultipartFile file) throws IOException
    {
        if (!file.isEmpty())
        {
            String articleImg = FileUploadUtils.upload(RuoYiConfig.getUploadPath(), file);
            if (!StringUtils.isEmpty(articleImg))
            {
                AjaxResult ajax = AjaxResult.success();
                ajax.put("url", articleImg);
                return ajax;
            }
        }
        return AjaxResult.error("上传图片异常,请联系管理员");
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

若依图片上传到服务器,前端显示图片 的相关文章

随机推荐

  • 【C++从入门到放弃】C++/g++不同文件夹的编译

    本文大面积参考了简书资料 https www jianshu com p 2b047bcce8fa 由于源书上存在好几处细节上的问题 比如 class Afunc 应该是 class A std cout lt lt include A l
  • Docker + ELK + SpringBoot部署

    步骤一 Docker安装ELK镜像 docker pull sebp elk 步骤二 启动镜像 方法一 Docker部署 docker run e ES JAVA OPTS Xms256m Xmx256m 设置虚拟机所需内存大小 p 560
  • 面试题:100个白球,100个黑球,每次取两个

    面试题 袋子里有黑白球各100个 每次从袋子里取2个球 若取的球颜色相同 则放入1个黑球 若不同 则放入1个白球 问 最后袋子里剩下1个黑球的概率是多少 思路一 每次取球有3种情况 1 两黑 此时放入1个黑球 黑球在袋子里个数为奇数个 白球
  • 网络原理详解(图文结合)

    目录 编辑一 应用层 1 请求和响应 2 通用的协议格式 1 xml 2 json 3 protobuffer 二 传输层 1 UDP 2 TCP 1 TCP 协议段格式 2 可靠传输的实现机制 确认应答机制 可靠性 超时重传机制 可靠性
  • VMware 安装 Windows11

    一 下载win11的镜像文件 可以在MSDN网站下载 MSDN系统库 致力于原版windows生态服务 二 创建虚拟机 1 双击打开VMware虚拟机 点击创建新的虚拟机 2 选择典型 推荐 然后点击下一步 3 在安装程序光盘映像文件下 点
  • 基于无法安装64位版本的visio,因为在您的PC上找到了以下32位程序的解决办法

    今天在给自己安装visio 64位版本的时候 出现 无法安装64位版本的visio 为在您的PC上找到了以下32位程序 microsoft access database engine 2010 english 请卸载所有32位Office
  • JAVA全排列算法

    利用java知识编写全排列算法 里面有我的个人理解注释 代码如下 package demo import java util ArrayList import java util Arrays import java util List S
  • 夺灵者哈卡(Hakkar, the Soulflayer)

    Hakkar the Soulflayer夺灵者哈卡Deathrattle Shuffle a Corrupted Blood into each player s deck 亡语 将一张 堕落之血 分别洗入双方玩家的牌库 Corrupte
  • java main()线程是不是最后一个退出的(相比较main中创建的其他多个线程)

    JVM会在所有的非守护线程 用户线程 执行完毕后退出 main线程是用户线程 仅有main线程一个用户线程执行完毕 不能决定JVM是否退出 也即是说main线程并不一定是最后一个退出的线程 public class MainThreadTe
  • 欧拉回路路径求解

    基本概念 今天讨论的主题是一类问题 就是欧拉路问题 有两种欧拉路 第一种叫做 Eulerian path trail 沿着这条路径走能够走遍图中每一条边 第二种叫做 Eularian cycle 沿着这条路径走 不仅能走遍图中每一条边 而且
  • 滑动平均滤波的Java实现

    滑动平均滤波的Java实现 滑动平均滤波是一种常用的信号处理技术 用于平滑输入信号并减少噪声的影响 本文将介绍如何使用Java实现滑动平均滤波 并提供相应的源代码 滑动平均滤波的原理是通过计算一系列连续输入信号的平均值来平滑信号 具体而言
  • el-calendar日历自定义显示内容

    版本信息 之前我整理了一篇VUE Element ui实战之el calendar日历自定义显示内容 有码友在评论区里分享了更简介的方式 看到后一直想尝试一下 所以本篇就是来 填坑的 按照提供的思路我尝试了一下 现将全部代码贴出来 以供大家
  • C/C++ cmake教程

    通过编写CMakeLists txt 然后运行cmake命令可以自动生成对应Makefile 从而控制make的编译过程 因此在学习cmake之前 建议先对make有个大致的了解 1 单个源文件的编译 如果你的项目只有一个源文件main c
  • 《一周搞定模电》-二极管

    一周搞定模电 二极管 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一周搞定模电 二极管 前言 一 什么是二极管 二 稳压二极管 整流二极管 开关二极管 前言 提示 这里可以添加本文要记录的大概内容 为找工作
  • 怎么排列html的顺序,css样式优先级及层叠的顺序排序探讨

    一般情况下 1位重要标志位 gt 4位特殊性标志 gt 声明先后顺序 important gt id gt class gt tag 使用 important可以改变优先级别为最高 其次是style对象 然后是id gt class gt
  • mysql:insert并发问题(on DUPLICATE KEY UPDATE)

    目录 一 insert 存在则更新 不存在则新增 1 表结构如下 2 sql语句 3 批量插入 某一条记录存在 则更新 其余进行新增 二 insert 存在则不进行任何操作 不存在则新增 1 sql语句 三 总结 小编最近在项目中 遇到了一
  • 你不知道的JavaScript---------语法

    目录 语句和表达式 语句的结果值 表达式的 副作用 上下文规则 标签语句 不推荐使用 代码块 对象结构 else if和可选代码块 在js中运算符有优先级 在js中的短路运算 函数参数 参数默认值 arguments 剩余参数 剩余参数和
  • 0基础小白入门SRC漏洞挖掘的正确姿势

    前言 有不少阅读过我文章的伙伴都知道 我从事网络安全行业已经好几年 积累了丰富的经验和技能 在这段时间里 我参与了多个实际项目的规划和实施 成功防范了各种网络攻击和漏洞利用 提高了安全防护水平 也有很多小伙伴私信问我怎么学 怎么挖漏洞 怎么
  • 安装mlxtend_python机器学习包mlxtend的安装和配置详解

    今天看到了mlxtend的包 看了下example集成得非常简洁 还有一个吸引我的地方是自带了一些data直接可以用 省去了自己造数据或者找数据的处理过程 所以决定安装体验一下 依赖环境 首先 sudo pip install mlxten
  • 若依图片上传到服务器,前端显示图片

    效果图如下 前端代码 table显示图片