图像上传功能实现

一、后端

文件存放在images.path路径下

package com.like.common;import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.UUID;/*** 本地文件上传下载*/
@RestController
@RequestMapping("/common")
@CrossOrigin
public class CommonController {@Value("${images.path}")private String basePath;/*** 文件上传* @param file* @return*/@PostMapping("/upload")public CommonDto<String> upload(MultipartFile file){//原始文件名String originalFilename = file.getOriginalFilename();String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));//使用UUID重新生成一个文件名,防止文件名重复,造成文件覆盖String fileName = UUID.randomUUID().toString() + suffix;//创建一个目录File dir = new File(basePath);//判断当前目录是否存在if(!dir.exists()){//如果目录不存在就直接创建dir.mkdirs();}try {//将临时文件转存到指定位置file.transferTo(new File(basePath + fileName));} catch (IOException e) {e.printStackTrace();}CommonDto<String> commonDto = new CommonDto<>();commonDto.setContent(fileName);return commonDto;}/*** 文件下载接口*/@GetMapping("/download")public void download(String name, HttpServletResponse response){try {//输入流,通过输入流读取文件内容FileInputStream fileInputStream = new FileInputStream(new File(basePath + name));//输出流 通过输出流将文件返回给浏览器,在浏览器中展示图片ServletOutputStream outputStream = response.getOutputStream();response.setContentType("/image/jpeg");int len = 0;byte[] bytes = new byte[1024];while((len = fileInputStream.read(bytes))!=-1){outputStream.write(bytes,0,len);outputStream.flush();}//关闭资源outputStream.close();fileInputStream.close();} catch (Exception e) {e.printStackTrace();}}
}

二、前端

表格元素里面添加如下代码

   <el-table-column label="头像"><template slot-scope="scope"><el-popoverplacement="top-start"trigger="hover"><img :src="scope.row.avatar" style="width: 150px; height: 150px;"><img :src="scope.row.avatar" slot="reference" style="width: 50px; height: 50px;"></el-popover></template></el-table-column>

新增和修改表单里添加如下代码

<!--        头像--><el-form-item label="头像" :label-width="formLabelWidth" prop="avatar"><el-uploadclass="avatar-uploader"action="http://localhost:3333/common/upload?module=avatar":show-file-list="false":on-success="handleAvatarSuccess"><img v-if="form.avatar" :src="form.avatar" class="avatar"><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload></el-form-item>

methods里写handleAvatarSuccess逻辑

 handleAvatarSuccess(res, file) {this.form.avatar = `http://localhost:3333/common/download?name=${res.content}`//手动触发一头像字段的校验this.$refs.foreName.validateField('avatar');//强制刷新this.$forceUpdate();},

三、效果如下

至此整个项目的开发工作全部完结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/153902.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据编程实验3 熟悉常用的HBase操作前期准备

一、实验目的 &#xff08;1&#xff09;理解HDFS在Hadoop体系结构中的角色&#xff1b; &#xff08;2&#xff09;熟练使用HDFS操作常用的Shell命令&#xff1b; &#xff08;3&#xff09;熟悉HDFS操作常用的Java API。 二、实验平台 1. 操作系统&#xff1a;Linux&#x…

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式

多线程进阶&#xff08;一&#xff09; 文章目录 多线程进阶&#xff08;一&#xff09;单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式&#xff0c;为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…

springboot项目中后台文件上传处理

参考地址:http://www.gxcode.top/code 文件上次核心处理代码: @Autowired private FileUpload fileUpload; //获取资源对象:file-upload-prod.properties@ApiOperation(value = "用户头像修改", notes = "用户头像修改", httpMethod =

Mall脚手架总结(三) —— MongoDB存储浏览数据

前言 通过Elasticsearch整合章节的学习&#xff0c;我们了解SpringData框架以及相应的衍生查询的方式操作数据读写的语法。MongoDB的相关操作也同样是借助Spring Data框架&#xff0c;因此这篇文章的内容比较简单&#xff0c;重点还是弄清楚MongoDB的使用场景以及如何通过Sprin…

相机坐标系之间的转换

一、坐标系之间的转换 一个有4个坐标系&#xff1a;图像坐标系、像素坐标系、相机坐标系、世界坐标系。 1.图像坐标系和像素坐标系之间的转换 图像坐标系和像素坐标系在同一个平面&#xff0c;利用平面坐标系之间的转换关系可以之知道两个坐标系变换的公式&#xff0c;并且该…

JRebel在IDEA中实现热部署 (JRebel实用版)

JRebel简介&#xff1a; JRebel是与应用程序服务器集成的JVM Java代理&#xff0c;可使用现有的类加载器重新加载类。只有更改的类会重新编译并立即重新加载到正在运行的应用程序中&#xff0c;JRebel特别不依赖任何IDE或开发工具&#xff08;除编译器外&#xff09;。但是&…

PlantUML 绘图

官网 https://plantuml.com/zh/ 示例 绘制时序图 USB 枚举过程 PlantUML 源码 startuml host <-- device : device insert host note right : step 1 host -> device : get speed, reset, speed check note right : step 2 host -> device …

数据结构 | (二) List

什么是 List 在集合框架中&#xff0c; List 是一个接口&#xff0c;继承自 Collection 。 Collection 也是一个接口 &#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下所示&#xff1a; Iterable 也是一个接口&#xff0c;表示实现该接口的类是可以逐个…

博弈论——动态博弈

动态博弈 0 引言 前面一篇文章介绍了博弈过程中的三个分类&#xff1a;静态博弈、动态博弈、重复博弈。今天具体讲讲动态博弈的处理方法。 博弈论——博弈过程 1 概念 首先还是介绍一下动态博弈的概念&#xff0c;即博弈中各博弈方的选择和行动不仅有先后次序&#xff0c;而…

Cesium热力图

二、代码 <!doctype html> <html><head><meta charset"utf-8"><link rel"stylesheet" href"./css/common.css"><title>热力图</title><script src"./js/config.js"></script>…

使用python查找指定文件夹下所有xml文件中带有指定字符的xml文件

文件夹目录如下&#xff08;需要递归删除文件夹下的.DS_Store文件&#xff09;&#xff1a; labels文件夹下面是xml文件&#xff1a; import os import os.pathpath "name/labels" files os.listdir(path) # 得到文件夹下所有文件名称 s []for xmlFile in files:…

k8spod就绪检查失败

pod 一直未就绪 kube-system metrics-server-7764f6c67c-2kts9 0/1 Running 0 10m kubect describe 查看 就绪探针未通过 Normal Started 3m19s kubelet Started container metrics-server Warning Unhealthy 5s (x20 over 2m55s) kubelet Readiness probe failed: HTTP probe…

【MySQL】表的基础增删改查

前面我们已经知道怎么来创建表了&#xff0c;接下来就来对创建的表进行一些基本操作。 这里先将上次创建的表删除掉&#xff1a; mysql> use test; Database changedmysql> show tables; ---------------- | Tables_in_test | ---------------- | student | -----…

数据库sql查询成绩第二高

select * from propro; #查询成绩第二高 select max(id) from propro where id <(select max(id) from propro); #查询成绩第二高的第二种方式 select * from (select * from propro order by id desc limit 2) as b order by id asc limit 1;

postgresql中的近一周,近一月,近三月,近一年日期段拆分

统计中经常会遇到,近一周,近一月,近三月,近一年数据统计,下面提供了postgresql拆分日期段的sql -- 近一周,每一天起止时间 select generate_series startDate,generate_series interval 1 day endDate from generate_series( NOW()::date interval -6 day, now()::timest…

【开源电商网站】(2),使用docker-compose和dockerfile进行配置,设置自定义的镜像,安装插件,增加汉化包,支持中文界面汉化。

项目相关代代码地址 相关内容&#xff1a; https://blog.csdn.net/freewebsys/category_12461196.html 原文地址&#xff1a; https://blog.csdn.net/freewebsys/article/details/133666433 包括以下运行的详细代码&#xff1a; https://gitee.com/study-demo-all/oscommerc…

【Python】语言学习

之前总觉得python简单&#xff0c;不当回事&#xff0c;直到自己动手连输出都写不出来。。于是开一篇专门练python的博客。 输出 Python初相识 (educoder.net) 常规输出 print("向上&#xff1a;%.2f,向下&#xff1a;%.2f" %(pow(1.001, 365),pow(0.999, 365))) …

vue2项目中使用element ui组件库的table,制作表格,改表格的背景颜色为透明的

el-table背景颜色变成透明_el-table背景透明_讲礼貌的博客-CSDN博客 之前是白色的&#xff0c;现在变透明了&#xff0c;背景颜色是蓝色

对于无法直接获取URL的数据爬虫

在爬学校安全教育题库的时候发现题库分页实际上执行了一段js代码&#xff0c;如下图所示 点击下一页时是执行了函数doPostBack&#xff0c;查看页面源码如下 点击下一页后这段js提交了一个表单&#xff0c;随后后端返回对应数据&#xff0c;一开始尝试分析获取对应两个参数&a…

VSCode Intellij IDEA CE 数据库连接

VSCode & Intellij IDEA CE 数据库连接 大概记一下现在正在用的几个工具/插件 VSCode VSCode 里面的工具我下载了很多&#xff0c;如果只是链接 MySQL 的话&#xff0c;可能用 Jun Han 这位大佬的 MySQL 就好了&#xff1a; 使用这个插件直接打开 .sql 文件单击运行就能…