之前也有做过上传图片的功能,不过是用在ssm的项目中,也有很多的不完美。

这次用的springboot,基本上对上传图片又有了一定的认识,想再这里记录一下。/**

* 上传图片

*

* @return

*/

@RequestMapping(value = "/uploadImages", method = RequestMethod.POST)

@ResponseBody

public Result uploadImages(@RequestParam(value = "file") MultipartFile file) {

if (file.isEmpty()) return Result.error("文件不存在");

String fileName = file.getOriginalFilename(); // 文件名

String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 后缀名

String filePath = "D://temp//"; // 上传后的路径,即本地磁盘

fileName = UUID.randomUUID() + suffixName; // 新文件名

File dest = new File(filePath + fileName);

if (!dest.getParentFile().exists()) {

dest.getParentFile().mkdirs();

}

try {

file.transferTo(dest);

} catch (IOException e) {

e.printStackTrace();

}

String filename = "/temp/" + fileName;//本地目录和生成的文件名拼接,这一段存入数据库

HashMap imgMap = new HashMap();

imgMap.put("imgUrl",filename);

return Result.success(imgMap);

}

设置资源映射路径:/**

* 资源映射路径

*/

@Configuration

public class MyWebAppConfigurer implements WebMvcConfigurer {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

//外部访问路径映射到本地磁盘路径

registry.addResourceHandler("/temp/**").addResourceLocations("file:D:/temp/");

}

}

由于springboot有默认上传文件大小,故在上传一些大size的图片,上传会失败,通过更改其默认设置:spring.servlet.multipart.max-file-size=100MB

spring.servlet.multipart.max-request-size=1000MB

不过springboot版本不同会导致上述语句有些偏差。

到这里上传图片已经完成,现在要关心就是回显了

目前我能做到回显就是外部访问图片了,即开启项目,使用外部路径访问:localhost:8080/项目名/temp/图片名.jpg

所以我们需要拼接前面的字符串:package com.********;//包名已注释

import com.********.TImg;//包名已注释

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.core.env.Environment;

import org.springframework.stereotype.Component;

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.util.List;

@Component

public class ImgUtils {

@Autowired

Environment environment;

public String getPort(){

return environment.getProperty("local.server.port");

}

public String getHostIp(){

InetAddress localHost = null;

try {

localHost = InetAddress.getLocalHost();

} catch (UnknownHostException e) {

}

String ip = localHost.getHostAddress(); // 返回格式为:xxx.xxx.xxx

return ip;

}

/**

* 获取真实路径

* @param list

*/

public void getRealUrl(List list,TImg img){

if(list != null) {

for (TImg item : list) {

if (!StringUtils.isEmpty(item.getImgUrl())) {

item.setRealUrl("http://" + getHostIp() + ":" + getPort() + "/" + "项目名" + item.getImgUrl());

}

}

}

if(img != null){

if(!StringUtils.isEmpty(img.getImgUrl())){

img.setRealUrl("http://" + getHostIp() + ":" + getPort() + "/" + "项目名" + img.getImgUrl());

}

}

}

}

通过这个工具类去获取本项目所在ip和端口号,并将其与上传图片存储路径进行拼接。

在做这个功能时也有查阅借鉴他人博客。

期待指正与补充!

补充:springboot打成war包在tomcat上部署,那么定义在springboot配置文件中的端口号会失效,并改为使用tomcat中定义的端口号,所以动态获取ip和端口号面对外置tomcar会失效。

java spring 上传图片,springboot 上传图片并回显相关推荐

  1. Vue+element ui上传图片和视频并回显,点击放大查看和播放

    1.上传图片 html代码: <el-uploadaction="#":auto-upload="false":on-change="handl ...

  2. Java Web之SpringMVC 进行数据回显

    基本介绍 数据回显:模型数据导向视图(模型数据 ---> Controller ---> 视图) 说明:SpringMVC在调用方法前会创建一个隐含的模型对象,作为模型数据的存储容器(隐含 ...

  3. java图片上传及图片回显1

    目的:选择图片,进行图片回显之后将图片保存到服务器上(PS:没有使用任何插件,样式很丑) 实现方式: js+servlet+jsp的方式来实现 事先准备: 文件上传处理在浏览器中是以流的形式提交到服务 ...

  4. JAVA Spring 事务管理事务不回滚问题

    Spring事务管理事务不回滚 dao层: @Repository public class UserDaoImpl implements UserDao { @Autowired private J ...

  5. 利用wangEditor富文本上传图片及文本并回显

    话不多说 直接上代码!!! html中得先引用wangEditor插件 vue中使用: 1.npm install wangeditor (注意 wangeditor 所有是小写字母)html 2.引 ...

  6. el-upload 上传图片、编辑时图片回显以及后续提交问题

    功能描述: 添加图片 上传成功在表格内显示该图片 点击编辑,打开上传图片对话框,图片回显(与添加共用同一个对话框) html代码:(具体添加.编辑按钮以及表格内显示上传成功的图片html代码就不放了, ...

  7. java回显怎么实现_Java实现简单的server/client回显功能

    Java实现简单的server/client回显功能 Socket是指在一个特定编程模型下,进程间通信链路的端点.因为这个特定编程模型的流行,Socket这个名字在其他领域得到了复用,包括Java叫技 ...

  8. 云his系统源码 SaaS应用 基于Angular+Nginx+Java+Spring开发

    云his系统源码 SaaS应用 功能易扩 统一对外接口管理 一.系统概述: 本套云HIS系统采用主流成熟技术开发,软件结构简洁.代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可 ...

  9. 使用多线程优化批量导入的回显功能

    最近参与开发的项目有批量导入数据的功能,导入回显的过程中需要做一些校验,以确保导入数据的正确性.如果导入的数据特别多,校验规则也特别多,那么一条一条校验的时间就会很长,影响系统使用.这个时候可以使用多 ...

最新文章

  1. R语言ggplot2可视化更改轴上数字的格式(显示格式)实战
  2. 微软官方教程教你如何在Windows上做Python开发?
  3. oracle删除临时表空间一直处于等待状态
  4. 老梁观世界“20120713期 癌症女博士的生命箴言”
  5. Mac模拟慢速网络 - Network Link Conditioner 安装和使用
  6. Go+Vue打印店远程打印小程序源码
  7. 河北省计算机网络技术专接本考什么,河北计算机专接本考什么
  8. python 入门基础-Python 如何入门?
  9. sql 左侧要固定最近一周的周四 怎么写_数据与IT人怎么提高公司地位,避免被业务当工具人?...
  10. FISCO BCOS Solidity 智能合约 返回多个值
  11. 【2019百度之星初赛二1002=HDU6675】度度熊与排列(贪心)
  12. 2019保研Tips:双非推免南京大学
  13. 8.14. JSON Types
  14. 总论点和分论点_您将面对与他人谈论隐私的4个常见论点
  15. AWS入门 – 开通海外账户及巧用免费套餐
  16. 夜夜听雨(三)(中国社会科学院 郑哲)
  17. Introduce·传播学核心期刊推荐之《现代传播(中国传媒大学学报)》
  18. 安科瑞“智慧用电”一个适合高校学生公寓安全用电的智能控制与管理系统
  19. 我想给他拿给他拿台计算机的英文,NO-BOOK 傻瓜机英语口语中级版The machine can do the work of ten men.这机器...
  20. 解决cv保存图片中文名称乱码 cv2.imwrite cv2.imencode

热门文章

  1. LeetCode题组:第14题-最长公共前缀
  2. OSM OpenStreetMap 获取城市路网数据及转为ESRI shp数据的方法
  3. 华数大数据平台解决方案
  4. java中的list时间排序
  5. VRRP协议介绍--转
  6. SpringBoot Thymeleaf使用教程(实用版)
  7. fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择 作者:机器人圈 / 微信号:ROBO_AI发表时间 :2017-07-28 图:pixabay
  8. 五大因素推动中国AI崛起,生态报告概览中国AI产业 By 机器之心2017年7月17日 12:51 中国的人工智能将会在全世界扮演什么样的角色?最近,风险投资机构Vertex发表了一份生态研究报告
  9. 蚂蚁金服成立科学智囊团,机器学习之父Michael I.Jordan担任主席
  10. 快的打车联合创始人兼技术副总裁闻诚:CTO要有“334”能力