Spring Boot实现图片上传和展示
Spring Boot实现图片上传和展示
本文将介绍如何使用Spring Boot框架搭建后端服务,实现接收前端上传的图片并保存到resources/images目录下。同时,我们还将展示如何在前端编写一个HTML页面,实现上传图片和从resources/images目录下获取图片并展示的功能。
后端实现
使用Spring Boot来快速搭建后端服务,以下是实现步骤:
- 创建Spring Boot项目并导入相关依赖。
- 创建一个Controller类,定义一个POST请求接口用于接收上传的图片,并将其保存到
resources/images目录下。代码示例:
@RestController
public class ImageUploadController {@Value("${upload.path}")private String uploadPath;@PostMapping("/upload")public String uploadImage(@RequestParam("file") MultipartFile file) {try {// 获取文件名String fileName = file.getOriginalFilename();// 指定保存路径String filePath = uploadPath + "/" + fileName;// 保存文件到本地file.transferTo(new File(filePath));return "上传成功";} catch (IOException e) {e.printStackTrace();return "上传失败";}}
}
在上述代码中,我们使用@Value注解注入了文件保存路径uploadPath,该路径配置在application.properties或application.yml文件中。
- 启动Spring Boot应用,后端服务即可接收并保存上传的图片。
前端实现
在前端,我们将使用HTML和JavaScript来实现图片上传和展示功能。以下是一个示例HTML页面的代码:
<!DOCTYPE html>
<html>
<head><title>图片上传与展示</title>
</head>
<body><h2>上传图片</h2><input type="file" id="imageInput"><button onclick="uploadImage()">上传图片</button><h2>展示图片</h2><div id="imageContainer"></div><script>function uploadImage() {var fileInput = document.getElementById('imageInput');var file = fileInput.files[0];var formData = new FormData();formData.append('file', file);fetch('/upload', {method: 'POST',body: formData}).then(response => response.text()).then(result => {if (result === '上传成功') {showImage(file.name);} else {console.log('上传失败');}}).catch(error => console.error('Error:', error));}function showImage(fileName) {var imageContainer = document.getElementById('imageContainer');var imgElement = document.createElement('img');imgElement.src = 'resources/images/' + fileName;imageContainer.appendChild(imgElement);}</script>
</body>
</html>
在上述代码中,我们创建了一个简单的HTML页面,包含一个文件选择框和一个上传按钮。当用户选择图片文件并点击上传按钮时,通过JavaScript代码将选中的图片文件发送到后端的/upload接口。上传成功后,调用showImage函数,在页面上展示上传的图片。
请确保将该HTML文件放置在与resources目录同级的目录下。
效果展示

相关文章:
Spring Boot实现图片上传和展示
Spring Boot实现图片上传和展示 本文将介绍如何使用Spring Boot框架搭建后端服务,实现接收前端上传的图片并保存到resources/images目录下。同时,我们还将展示如何在前端编写一个HTML页面,实现上传图片和从resources/images目录下获取图片并…...
大数据-之LibrA数据库系统告警处理(ALM-37015 Gaussdb进程可用文件句柄资源不足)
告警解释 操作系统环境文件句柄不足时,产生该告警。 告警属性 告警ID 告警级别 可自动清除 37015 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Instance 产生告警…...
大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具?
大一学编程怎么学?刚接触编程怎么学习,有没有中文编程开发语言工具? 1、大一刚开始学编程,面对复杂的代码学习非常吃力,很难入门。建议刚接触编程可以先学习中文编程,了解其中的编程逻辑,学编程…...
GoWeb学习-第二天
文章目录 从零开始学Go web——第二天一、安装Go语言二、建立web目录2.1 创建GO语言包目录2.2 创建Go web文件 三、编译并运行Go web应用3.1 编译并运行3.2 查看结果 从零开始学Go web——第二天 第一天我们了解了与web息息相关的HTTP协议,聊了聊Go与web的关系等…...
04-鸿蒙4.0学习之样式装饰器相关
04-鸿蒙4.0学习之样式装饰器 styles装饰器:定义组件重用样式 /*** styles装饰器:定义组件重用样式*/ Entry Component struct StyleUI {State message: string stylesStyles commonStyle(){.width(200).height(100).backgroundColor(Color.Gray).marg…...
C# 线程(1)
目录 1 线程与进程2 创建线程3 线程等待4 线程优先级5 前台线程与后台线程6 Lock与线程安全7 Monitor8 死锁9 线程中异常处理 1 线程与进程 进程是计算机概念,一个程序运用时占用的的所有计算机资源(CPU、内存、硬盘、网络)统称为进程。 线程…...
冒泡排序以及改进方案
冒泡排序以及改进方案 介绍: 冒泡排序属于一种典型的交换排序(两两比较)。冒泡排序就像是把一杯子里的气泡一个个往上冒一样。它不断比较相邻的元素,如果顺序不对就像水泡一样交换它们的位置,直到整个序列像水泡一样…...
QTextEdit 是 Qt 框架中的一个类,用于显示和编辑多行文本内容的可编辑部件
QTextEdit 是 Qt 框架中的一个类,用于显示和编辑多行文本内容的可编辑部件。 QTextEdit 提供了一个用于显示和编辑富文本(包括格式化文本、图像和链接等)和纯文本的文本编辑器。它支持基本的文本操作(如复制、粘贴、撤销、重做等…...
vue+jsonp编写可导出html的模版,可通过外部改json动态更新页面内容
效果 导出后文件结果如图所示,点击Index.html即可查看页面,页面所有数据由report.json控制,修改report.json内容即可改变index.html展示内容 具体实现 1. 编写数据存储的json文件 在index.html所在的public页面新建report.json文件ÿ…...
查看各ip下的连接数
netstat -n | awk /^tcp/ {print $5} | awk -F: {print $1} | sort | uniq -c| sort -rn netstat -n:显示所有的网络连接,不包括任何服务名的解释。awk /^tcp/ {print $5}:使用awk命令过滤出tcp协议的连接,并打印出每个连接的第五…...
Linux—进程状态
目录 一.前言 1.1.通过系统调用获取进程标示符 1.2.通过系统调用创建进程 二.进程状态 三.Z(zombie)-僵尸进程 四.僵尸进程危害 一.前言 学习进程的状态,我们首先了解一下进程的基本数据 1.1.通过系统调用获取进程标示符 由getpid()…...
万宾科技可燃气体监测仪科技作用全览
燃气管网在运行过程中经常会遇到燃气管道泄漏的问题,燃气泄漏甚至会引起爆炸,从而威胁人民的生命和财产安全,因此对燃气管网进行定期巡检是十分必要的工作。但是传统的人工巡检已不能满足城市的需要,除了选择增加巡检人员之外&…...
Python与GPU编程快速入门(三)
3、使用Numba加速Python代码 Numba 是一个 Python 库,它使用行业标准 LLVM 编译器库在运行时将 Python 函数转换为优化的机器代码。 您可能想尝试用它来加速 CPU 上的代码。 然而,Numba还可以将Python 语言的子集转换为CUDA,这就是我们将在这里使用的。 所以我们的想法是,…...
praseInt 和 逻辑或连用
这是做项目时遇到json文件转换 的一个小坑 将json 对象中的值 由字符串(数字字符串) 转换为 数值类型,如果是 转换失败 ,就返回 -1 这里的 parseInt 看起来非常简洁,但是存在一个小坑 transformedData[fieldsToCheck[i]] parseInt(origina…...
对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存,实行可追溯管理
对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存,实行可追溯管理 数据记录(包括获取、持有、提供、利用、销毁等全闭环)...
XAER_RMERR: Fatal error occurred in the transaction branch异常解决
XAER_RMERR: Fatal error occurred in the transaction branch异常解决 数据库权限问题!!!不是mysql驱动问题,执行下面命令解决 GRANT XA_RECOVER_ADMIN ON *.* TO root% ;...
Redis面试常见问题
Redis中的Lua脚本到底能不能保证原子性? Redis中Lua脚本的执行,可以保证并发编程中不可再拆分的这个原子性,但是没有保证数据库ACID中要么都执行要么都回滚的这个原子性。Lua脚本执行过程中命令产生错误,是不会回滚的,…...
浏览器触发下载Excel文件-Java实现
目录 1:引入maven 2:代码实现 3.导出通讯录信息到Excel文件 4.生成并下载Excel文件部分解释 1:引入maven 添加依赖:首先,在你的项目中添加EasyExcel库的依赖。你可以在项目的构建文件(如Maven的pom.xml)中添加以下依赖项:<dependency><groupId>com.alib…...
每日汇评:黄金在上涨趋势恢复之前面临修正性回调的风险
周三早些时候,金价触及六个月来的最高水平,接近 2050 美元; 在美联储转向鸽派立场后,美元和美债双双下跌; 日线图上的超买RSI指标警示多头,但即将到来的金十字图形使上行保持不变; 金价在周三亚…...
【开源】基于Vue.js的大学计算机课程管理平台的设计和实现
项目编号: S 028 ,文末获取源码。 \color{red}{项目编号:S028,文末获取源码。} 项目编号:S028,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2…...
Qwen1.5-1.8B GPTQ模型轻量化部署效果:低显存占用下的性能保持
Qwen1.5-1.8B GPTQ模型轻量化部署效果:低显存占用下的性能保持 最近在折腾大模型本地部署的朋友,可能都遇到过同一个头疼的问题:模型效果不错,但显存要求太高,自己的显卡根本跑不起来。动辄几十GB的显存需求ÿ…...
OpenClaw+千问3.5-9B社交媒体管理:定时发布与智能互动
OpenClaw千问3.5-9B社交媒体管理:定时发布与智能互动 1. 为什么选择OpenClaw管理社交媒体 去年我开始尝试运营技术类社交媒体账号时,每天要花2-3小时手动处理内容发布和粉丝互动。直到发现OpenClaw这个能直接操控我电脑的AI助手,配合千问3.…...
单细胞测序实战:从原始数据到高质量细胞图谱的R/Seurat预处理全流程
1. 单细胞测序入门:为什么预处理如此重要? 第一次接触单细胞测序数据时,我盯着电脑屏幕上密密麻麻的基因表达矩阵发愣——这堆数字怎么就能变成漂亮的UMAP聚类图?后来才明白,数据预处理就是搭建这座桥梁的关键工序。简…...
如何永久保存微信聊天记录?这个免费工具让你轻松备份和分析所有对话![特殊字符]
如何永久保存微信聊天记录?这个免费工具让你轻松备份和分析所有对话!🚀 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https:…...
ESPS USB MSC 调试全过程记录酪
背景 在软件开发的漫长旅途中,"构建"这个词往往让人又爱又恨。爱的是,一键点击,代码变成产品,那是程序员最迷人的时刻;恨的是,维护那一堆乱糟糟的构建脚本,简直是噩梦。 在很多项目中…...
Git常用命令速查手册,微硕WST8205A双N沟MOSFET,汽车阅读灯静音负载开关。
常用的 Git 命令指南 Git 是当今最流行的分布式版本控制系统,广泛应用于软件开发中。掌握常用 Git 命令可以显著提高开发效率。以下是 Git 日常操作中频繁使用的命令及其用途。 初始化与克隆仓库 git init 在当前目录创建一个新的 Git 仓库,生成隐藏的 .…...
中国婴幼儿肌肤特点分析报告
中国婴幼儿肌肤受基因、气候、生活习惯等多重因素影响,呈现出屏障先天薄弱、结构发育缓慢、耐受力偏低等独特生理特征,再加上国内气候多样、高频清洁习惯、西方育儿理念本土化不足等后天因素,使得中国宝宝更易出现干燥、敏感、热疹、湿疹等问…...
LangGraph 容错机制设计:节点降级+流程跳转+异常捕获
LangGraph 容错机制设计:节点降级+流程跳转+异常捕获 关键词 LangGraph, 容错机制, 节点降级, 流程跳转, 异常捕获, 大语言模型应用可靠性, Agent编排 摘要 随着大语言模型(LLM)在生产环境中的应用日益广泛,Agent编排系统(如LangChain中的LangGraph)的可靠性与容错能力…...
5分钟搞定OpenClaw安装:千问3.5-9B本地部署指南
5分钟搞定OpenClaw安装:千问3.5-9B本地部署指南 1. 为什么选择OpenClaw千问3.5-9B组合 上周我在整理历年技术笔记时,被上千个零散的Markdown文件折磨得够呛。直到尝试用OpenClaw千问3.5-9B搭建本地自动化助手,才真正体会到"AI提效&quo…...
Mojo模块如何无缝注入PyTorch训练循环:从Cython替代到JIT热重载的完整链路(仅限内测版工具链公开)
第一章:Mojo模块如何无缝注入PyTorch训练循环:从Cython替代到JIT热重载的完整链路(仅限内测版工具链公开)Mojo模块通过原生ABI兼容层与PyTorch C前端深度对齐,无需修改torch.compile()调用栈即可嵌入训练循环。其核心机…...
