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 ...
随机推荐
- DB读写分离情况下,如何解决缓存和数据库不一致性问题?
前言 在读写分离的情况下,缓存和数据库数据不一致怎么解决? 请看这一篇如何更新缓存保证缓存和数据库双写一致性? 如何解决DB数据库的数据不一致问题? 请看这一篇怎么解决DB读写分离,导致数据不一致问题 ...
- laravel-admin php artisan admin:install报错问题解决办法
问题描述:根据laravel-admin官方文档安装步骤,执行:php artisan admin:install 安装时报错. 其实是数据库创建特殊字符过长问题,laravel 5.4 改变了默认的 ...
- 启动workman stream_socket_server() has been disabled for security reasons
启动workman报错 Workerman[start.php] start in DEBUG mode stream_socket_server() has been disabled for se ...
- 智能Agent如何改造传统工作流:从搜索到全能助手
智能Agent如何改造传统工作流:从搜索到全能助手 引言:当AI遇上工作流 还记得我们以前搜索信息的方式吗?输入关键词,浏览大量结果,筛选有用内容,再整合成我们需要的答案.这个过程不仅耗时,还常常让人 ...
- java学习-8【EnumMap】
EnumMap和EnumSet几乎是一样的,区别时EnumMap的key时Enum. public enum Types { RED,GREEN,BLACK,YELLO } @Test public ...
- Greenplum常用命令、函数
Greenplum常用查询命令 #查看test_bd事务(即数据库)下的所有表名包含 user 的 表信息 SELECT UPPER(A.SCHEMANAME) AS SCHEMANAME, UPPE ...
- apache/wampserver配置虚拟主机、多站点端口、允许通过ip访问
虽然经常配置这个,但有时一着急想不起来,这里做个记录 步骤: 监听本网络本主机的端口 (Listen 0.0.0.0:端口号) 添加虚拟主机 VirtualHost 配置目录访问权限(Require ...
- 一个用原生JavaScript实现的日历小工具,开箱即用
---------------- 用原生JavaScript实现的一个日历小工具,开箱即用,可用于做签到记录.日程等显示控件,具体自己发挥啦 效果如下图,可以自行美化 >>点击体验< ...
- js 获取缓存渲染到页面里面
$('#code').change(function(){ console.log($(this).val()) localStorage.setItem("code",JSON. ...
- [python] 基于WatchDog库实现文件系统监控
Watchdog库是Python中一个用于监控文件系统变化的第三方库.它能够实时监测文件或目录的创建.修改.删除等操作,并在这些事件发生时触发相应的处理逻辑,因此也被称为文件看门狗. Watchdog ...