java springboot图片上传和访问
上传
@RequestMapping("/uploadImg")
public Result uploadImg(HttpServletRequest request, MultipartFile file){
log.info("/uploadImg->上传图片->开始" );
JSONObject jsonObject = new JSONObject();
String mid = request.getParameter("mid");
//String rootPath = System.getProperty("catalina.home");
//rootPath = rootPath + "/" + image_path;
String rootPath = image_path;
File f = new File(rootPath);
if(!f.exists()){
f.mkdir();
}
if (StringUtils.isBlank(mid)){
return Result.error("mid is error");
}
String uuidStr = UUID.randomUUID().toString().replace("-","");
String fileName = uuidStr + ".png";
String filePath = rootPath + "/" + fileName;//本地绝对路径
String filePathTmp = rootPath + "/" + uuidStr + "_tmp.png";
log.info("[图片接口]上传的图片本地绝对路径为->" + filePath);
f = new File(filePath);
try {
file.transferTo(f);
} catch (IOException e) {
e.printStackTrace();
throw new AbpException("[图片接口]写文件到磁盘失败");
}
if(UtilImg.createThumbnail(filePath,filePathTmp, Float.parseFloat(image_width),Float.parseFloat(image_height))){
UtilImg.delelteAndRenameFile(filePath,filePathTmp,uuidStr);
}
jsonObject.put("path",fileName);
log.info("/uploadImg->上传图片->结束->" + jsonObject.toJSONString() );
return Result.ok(jsonObject);
}
访问
@RequestMapping("/getImg/{filename}")
public void getImg(HttpServletResponse response, @PathVariable("filename") String filename){
log.info("/getImg->访问图片->开始" );
if(StringUtils.isBlank(filename)){
throw new AbpException("[图片接口]参数有误");
}
//String rootPath = System.getProperty("catalina.home");
//String filePath = rootPath + "/" + image_path + "/" + filename;
String rootPath = image_path;
String filePath = rootPath + "/" + filename;
File imageFile = new File(filePath);
if (imageFile.exists()){
FileInputStream fis = null;
OutputStream os = null;
try {
fis = new FileInputStream(imageFile);
os = response.getOutputStream();
int count = 0;
byte[] buffer = new byte[1024 * 8];
while((count = fis.read(buffer)) != -1){
os.write(buffer,0,count);
os.flush();
}
log.info("[图片接口]输出完成");
} catch (Exception e) {
e.printStackTrace();
throw new AbpException("[图片接口]打开图片失败,可能图片ID错误");
}finally {
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
throw new AbpException("[图片接口]关闭输入流失败");
}
}
if(os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
throw new AbpException("[图片接口]关闭输出流失败");
}
}
}
}else{
throw new AbpException("[图片接口]图片ID错误");
}
}
上传的接口文档

访问的接口文档

java springboot图片上传和访问的更多相关文章
- java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。
java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...
- SpringBoot图片上传(四) 一个input上传N张图,支持各种类型
简单介绍:需求上让实现,图片上传,并且可以一次上传9张图,图片格式还有要求,网上找了一个测试了下,好用,不过也得改,仅仅是实现了功能,其他不尽合理的地方,还需自己打磨. 代码: //html<d ...
- SpringBoot图片上传(三)——调用文件上传项目的方法(同时启动两个项目)
简单说明:图片上传有一个专门的工程A,提供了图片的上传和下载预览,工程B涉及到图片上传以及回显,都是调用的工程A的方法,言外之意就是要同时启动两个项目. 代码: //工程B的html代码 <di ...
- Java Servlet图片上传至指定文件夹并显示图片
在学习Servlet过程中,针对图片上传做了一个Demo,实现的功能是:在a页面上传图片,点击提交后,将图片保存到服务器指定路径(D:/image):跳转到b页面,b页面读取展示绝对路径(D:/ima ...
- Java实现图片上传返回上传地址
**关于在实际开发中最常用也是用的最多的Java实现文档.图片上传.***一.准备阶段*文档.图片上传有几种方式,包括传统的ajax上传,云上传,这里给大家实现通过代码将图片上传至七牛云服务器并返回图 ...
- java web图片上传和文件上传
图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定要写属性enctype=" ...
- Java Struts图片上传至指定文件夹并显示图片
继上一次利用Servlet实现图片上传,这次利用基于MVC的Struts框架,封装了Servlet并简化了JSP页面跳转. JSP上传页面 上传一定要为form加上enctype="mult ...
- java实现图片上传功能,并返回图片保存路径
1.前端html <div class="form-group"> <label for="inputPassword3" class ...
- java+Word图片上传控件
这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用 后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下) ...
- nginx代理图片上传以及访问
nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller @Post ...
随机推荐
- 异步编程——CompletableFuture详解
Future JDK5 新增了Future接口,用于描述一个异步计算的结果. 虽然 Future 以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不方便,我们必须使用Future.g ...
- 有限元方法[Matlab]-笔记
<-- 访问笔记代码仓库 --> << MATLAB Codes for Finite Element Analysis - Solids and Structures (Fe ...
- ppt 文字 +图 样式 设计
1. 设计前 设计后 图 +文字排版 图多 字少
- 通过 C# 打印Word文档
Word文档是日常办公和学习中不可或缺的一部分.比如在商务往来中,经常需要打印 Word 文档用于撰写和传递正式的商务信函.合作协议.项目提案等.打印出来的文档便于双方签字盖章,具有法律效力和正式性. ...
- Apache Tomcat RCE漏洞复现(CVE-2025-24813)
漏洞描述 该漏洞的核心在于不完整PUT请求上传时 Tomcat 会使用了一个基于用户提供的文件名和路径生成的临时文件,且路径分隔符被替换为 . . 若同时满足以下条件,攻击者可执行任意代码: 默认 S ...
- bug|项目经验|记录某次页面div使用v-html标签渲染图片等内容的过程
前言 记录某次页面div使用v-html标签渲染图片等内容的过程 一.结论: get请求但被设置Sec-Fetch-*请求头的图片无法展示. 二.原因: 1.本项目中的img标签发起get请求,目标链 ...
- delphi+sql数据库增加,删除,修改,查询操作
需要注意的是,open一般用于查询(select),exesql用于修改,插入,删除(update,insert,delete) 增加 with dm.DataModule1.ADOQuery1 do ...
- luogu-P5320题解
简要题意 设 \(f(n)\) 表示用多米诺骨牌恰好铺满 \(2\times n\) 的平面的方案数,\(g(n)\) 表示用多米诺骨牌恰好铺满 \(3\times n\) 的平面的方案数:设 \(F ...
- python之random函数,随机取值
如 a =['辣椒炒肉','红烧肉','剁椒鱼头','酸辣土豆丝','芹菜香干'] 需要从a数组中随机取出一个值打印出来 具体脚本 import random a =['辣椒炒肉','红烧肉','剁椒 ...
- gRPC 和传统 RPC 有啥不一样?一篇讲清楚!
现在大家做系统开发,都喜欢搞"微服务架构"--简单说就是把一个大系统拆成很多小服务,这样更灵活也更容易扩展.那这些服务之间怎么沟通呢?就得靠一种技术叫 RPC(远程过程调用).今天 ...