本文介绍 ssm (Spring+SpringMVC+Mybatis)实现上传功能。

以一个添加用户的案例介绍(主要是将上传文件)。

一、需求介绍

我们要实现添加用户的时候上传图片(其实任何文件都可以)。

文件名:以 博客名+日期的年月日时分秒毫秒形式命名

如 言曌博客2017082516403213.png

路径:上传到 uploads 文件夹,并 生成相应的 年和月 子文件夹

如 uploads/2017/8/言曌博客2017082516403213.png

数据库:将"年/月/"+文件名 存储到数据表中

如 2017/8/言曌博客20170825164809907.jpg

二、导入 Jar 包

上传功能需要额外的两个 jar 包,如下

导入 环境中

我这里使用是 Maven,添加依赖

1

2

3 commons-fileupload

4 commons-fileupload

5 1.2.2

6

7

8 commons-io

9 commons-io

10 2.4

11

三、代码结构

文件上传到如图 uploads,如果你和博主也是使用了 Maven,文件其实是上传到

ForestBlog\target\ForestBlog\resource\uploads\2017\8 里面,这个没影响的。

但是要要记得在 clean 之前把 \target\ForestBlog\resource\uploads 文件复制到

src\main\ForestBlog\resource\uploads 中

四、代码实现

我们这里主要看上传部分代码,其他的配置文件也贴一下吧

1、springmvc 配置 (springmvc.xml部分代码)

1

2

3

4

5

6

7

2、jsp 页面 (createUser.jsp部分代码)

1

2 method="post" enctype="multipart/form-data" >

3

4

5

3、控制器代码(UserController.java 中 添加用户类)

//添加用户提交

@RequestMapping(value = "/createUserSubmit",method =RequestMethod.POST)public String createUserSubmit(UserCustom userCustom,MultipartFile upload_avatar ) throwsException {//上传图片

if(upload_avatar.getSize()!=0) {

String newFileName=functions.uploadFile(request,upload_avatar);

userCustom.setAvatar(newFileName);

}

userCustom.setLastloginip(functions.getIpAddr(request));

userService.createUser(userCustom);return "redirect:userList.action";

}

4、上传文件代码 (functions.java 记得要注入)

1 //上传文件

2 public String uploadFile(HttpServletRequest request,MultipartFile uploadFile) throwsIOException {3 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");4 String res = sdf.format(newDate());5 //uploads文件夹位置

6 String rootPath =request.getServletContext().getRealPath("/resource/uploads/");7 //原始名称

8 String originalFilename =uploadFile.getOriginalFilename();9 //新的文件名称

10 String newFileName = "言曌博客"+res+originalFilename.substring(originalFilename.lastIndexOf("."));11 //创建年月文件夹

12 Calendar date =Calendar.getInstance();13 File dateDirs = newFile(date.get(Calendar.YEAR)14 + File.separator + (date.get(Calendar.MONTH)+1));15 //新文件

16 File newFile = new File(rootPath+File.separator+dateDirs+File.separator+newFileName);17 //判断目标文件所在的目录是否存在

18 if(!newFile.getParentFile().exists()) {19 //如果目标文件所在的目录不存在,则创建父目录

20 newFile.getParentFile().mkdirs();21 }22 System.out.println(newFile);23 //将内存中的数据写入磁盘

24 uploadFile.transferTo(newFile);25 //完整的url

26 String fileUrl = date.get(Calendar.YEAR)+ "/"+(date.get(Calendar.MONTH)+1)+ "/"+newFileName;27 returnfileUrl;28 }

主要关注 上传文件的方法,属性注入这里就不赘述了

写的步骤很完整、清晰

https://liuyanzhao.com/5989.html

java ssm如何上传图片_ssm整合-图片上传功能(转)相关推荐

  1. java+ssm详解_ssm整合详解

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  2. java多图片上传json_[Java教程]SpringMVC框架五:图片上传与JSON交互

    [Java教程]SpringMVC框架五:图片上传与JSON交互 0 2018-08-07 22:00:42 在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包 ...

  3. Java实现图片上传功能(前后端:vue+springBoot)

    Java实现图片上传功能(前后端:vue+springBoot) 前言: 前端: 组件引入 基础文件上传 自定义上传方法 后端: 需要引入的jar包: 基础文件上传 Controller层: serv ...

  4. html实现照片添加功能,HTML5 Canvas调用手机拍照功能实现图片上传功能(图文详解上篇)...

    这篇文章主要为大家详细介绍了HTML5 Canvas,和jquery技术,调用手机拍照功能实现图片上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 因为最近一段时间,一直在弄微信项目,其中涉及到 ...

  5. php layui ajax多图上传,Laravel+Layer实现图片上传功能(整理篇)

    ♩ 背景 昨天在自己的 Laravel5.5 框架项目中,希望集成 Layer 的图片上传功能 但是在 ajax(POST) 提交请求时,一直显示 500 报错 ♪ 分析 ⒈ 问题所在 最后将核心代码 ...

  6. 百度编辑器图片上传功能解疑

    最头疼的上传图片问题 版本选择和自定义配置 项目中使用了百度编辑器ueditor,这里是官网链接,效果还算不错,使用中的一些经验,分享在这里. 我使用的环境是.NET MVC3 最头疼的上传图片问题 ...

  7. 人人网的相册里图片上传功能是怎样实现的

    大侠们,给我讲解下类似于人人网的相册里,图片上传功能是怎么实现的,它可以批量上传.我的想法是实现一个批量上传图片的功能,1.可以让用户同时选择多个图片上传.2.上传后会显示出来,并且可以单独对某张图进 ...

  8. Web开发中图片上传功能总结

    图片上传功能总结   1.添加文件上传所需jar包(commons-io-1.4.jar和commons-fileupload-1.1.1.jar)   2.在form表单上添加自带属性 enctyp ...

  9. 「VUE架构」VUE2.0 图片上传功能(移动端)

    本文主要介绍VUE2.0图片上传功能的实现.原理是通过js控制和input标签的方式完成这一效果,无需加载其他组件. 效果图如下: 1.DOM代码 1.1input标签 由于我们是通过input标签的 ...

最新文章

  1. ENJOYLink欢联,以独创技术满足数据中心布线
  2. Apache日志配置参数说明
  3. Javascript中最常用的61段经典代码
  4. java 8 stream()
  5. 递归大总结之台阶问题
  6. html5 复制到剪贴板 兼容,js/jQuery实现复制到剪贴板功能,兼容所有浏览器
  7. 5分钟正则表达式,了解一下!
  8. 0929【非常好】 库仑计计算电量 Fuel Gauge 锂离子电池及电池电量计介绍
  9. 书城项目 软件可行性分析报告
  10. NLTK-004:加工原料文本
  11. 【115天】尚学堂高琪Java300集视频精华笔记(7-8)
  12. 用UWP模仿网易云音乐的动画
  13. 如何给PDF加密码保护?这3种方法总有一个能用上
  14. 如何使用Flutter封装即时通讯IM框架开发插件
  15. 正则改造VS Code里React类组件的自定义snippet
  16. 电感器的正确测量电感同BuH的关系
  17. linux命令教程第六期
  18. shift删除的文件如何恢复?
  19. 无懈可击的web设计
  20. 首席新媒体黎想教程:活动运营主题策划,及前端玩法设计!

热门文章

  1. 【自定义组件】如何引用自定义组件
  2. SweetAlert – 替代 Alert 的漂亮的提示效果
  3. input长度随输入内容动态变化 input光标定位在最右侧
  4. webpack 引入jquery和第三方jquery插件
  5. nth-child(n)和nth-of-type(n)
  6. 子组件上下结构布局自适应父组件宽度高度
  7. [Swift]LeetCode281. 之字形迭代器 $ Zigzag Iterator
  8. eureka-7-多网卡下的ip选择
  9. 2018.2.28(延迟加载和缓存)
  10. linux里面三剑客的重要作用