文主要来总结下SpringMVC中实现单个文件上传的步骤。
本节是在上一节的基础上做的

jar包

SpringMVC上传文件的功能需要两个jar包的支持,主要是CommonsMultipartResolver解析器依赖于这两个jar包:


前台页面

添加jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加图片</title>
</head>
<body><form action="${pageContext.request.contextPath }/stu/addPic" method="post" enctype="multipart/form-data">添加图片:<input type="file" name="picture"/><input type="submit" value="提交"/></form>
</body>
</html>


注意:form表单中别忘了写enctype="multipart/form-data"属性。


对多部件类型multipart解析

针对上面的enctype=”multipart/form-data”类型,SpringMVC需要对multipart类型的数据进行解析,在springmvc.xml中配置multipart类型解析器即可:

<!-- 配置多媒体文件解析器 -->
<!-- 文件上传 -->
<bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 设置上传文件的最大尺寸为5MB  5*1024*1024B--><property name="maxUploadSize"><value>5242880</value></property>
</bean>

创建文件保存的虚拟目录

在上传文件之前,首先要创建一个虚拟目录来保存文件,这个虚拟目录会对应磁盘上的一个实际的目录,在实际开发中肯定会有一个服务器专门存储资源的,在这里我们就用本地磁盘来保存文件,然后映射一个虚拟目录,用来在程序中指定获取文件的路径。

1)新建文件夹来存储图片

在F盘下新建temp/images来存储图片

2)在tomcat配置文件中配置

在tomcat的conf文件夹中的server.xml中配置:

也可以在eclipse中点击tomcat弹出设置,然后在其中创建,这里就不说了


编写Controller

1)跳转到增加图片界面

@RequestMapping("/toAddPic")
public String toAddPic() throws CustomerException{return "jsp/add_pic";
}

2)编写保存图片的方法

注意:要避免文件名重复!
考虑实际情况,保存图片时一般不只你一个人保存图片,那么这个图片有的时候文件名可能会重复,你保存多了会把原来的图片给覆盖掉,这就不太合适了,所以需要使用UUID算法为每个文件生成一个新的文件名。
SpringMVC文件上传的类是MultipartFile,参数名称picture必须和前台editItem.jsp页面的name属性一致才行。

@RequestMapping("/addPic")
public String addPic(MultipartFile picture) throws IllegalStateException, IOException{// 处理上传的单个图片    String originalFileName = picture.getOriginalFilename();// 原始名称//上传图片--首先判断有没有文件上传if(picture!=null && originalFileName!=null&& originalFileName.length()>0){// 存储图片的物理路径,实际中是要写到配置文件中的,不能在这写死String pic_path = "F:\\temp\\images\\";//新的图片名称String newFileName = UUID.randomUUID()+ originalFileName.substring(originalFileName.lastIndexOf(".")); File newFile = new File(pic_path + newFileName);//新图片 picture.transferTo(newFile);// 将内存中的数据写入磁盘}return "jsp/student_list";
}

注意:这个案例只是把图片上传到服务器,实际应用中会将图片的地址以string保存到数据库用于使用。
测试即可

SpringMVC中实现文件上传相关推荐

  1. (转)SpringMVC学习(九)——SpringMVC中实现文件上传

    http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...

  2. SpringMVC中的文件上传与下载,json转换,及三大框架的整合

    文章目录 文件上传 准备一个文件上传的表单 导入文件上传需要的jar包 配置文件上传解析器 编写文件上传的Controller控制器中的代码: 使用ResponseEntity返回值处理文件下载 使用 ...

  3. SpringMVC中的文件上传与下载

    文件上传: apache上传组件方案 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileup ...

  4. SpringMVC中的文件上传

    1. 配置图片服务器 一般图片会单独保存在图片服务器上, 本文为简化处理, 在Tomcat中配置一个路劲用于专门存放图片 在tomcat上配置图片虚拟目录,在tomcat下conf/server.xm ...

  5. c++读取json文件_[SpringMVC]-SpringMVC架构-07-SpringMVC文件上传

    SpringMVC学习 SpringMVC文件上传 文件上传相关 操作步骤: a.在pom.xml中添加文件上传相关jar包 b.配置文件解析器(在核心配置文件springmvc.xml.相关jsp文 ...

  6. jquery.form.js java_使用jQuery.form.js/springmvc框架实现文件上传功能

    使用的技术有jquery.form.js框架, 以及springmvc框架.主要实现异步文件上传的同时封装对象,以及一些注意事项. 功能本身是很简单的,但是涉及到一些传递参数类型的问题.例如:jque ...

  7. tomcat temp 大量 upload 文件_问题:JavaWeb中实现文件上传的方式有哪些?

    问题:JavaWeb中实现文件上传的方式有哪些? 上回我们说了下文件下载的方式有哪些,这次我们从不同的环境下简单来说说文件上传的方式有哪些. 文件上传的方式 Servlet2.5 方式 Servlet ...

  8. SpringMVC之多文件上传表单

    上文简单介绍了springMVC之单文件上传 ,本文继续介绍多文件上传表单.包含单文件上传的表单已经能够满足大部分功能需求,但任然不够完善.实际业务中可能会包含多个文件同时上传,例如:商家在电商平台申 ...

  9. IIS 6和IIS 7 中设置文件上传大小限制设置方法,两者是不一样的

    在IIS 6.0中设置文件上传大小的方法,只要设置httpRuntime就可以了 <system.web><httpRuntime executionTimeout="36 ...

  10. 在Struts 2中实现文件上传

    前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问题. 实现原理 Struts 2是通过Commons FileUpload文件上传.Commons ...

最新文章

  1. 仰视源代码,实现strcpy
  2. 26、Power Query-日期与时间数据处理实例(统计出某年各月各周的借书人数)
  3. OpenGL - Normal Map
  4. CTF加解密/编码常用在线网址
  5. jq fileupload 设置最大文件大小5m_捷达将发布全新中大型SUV 或命名VS9/车长超5m
  6. 教你从零开始搭建一款前端脚手架工具
  7. (原创) JavaScript是什么?
  8. TCP协议的部分解析(2)
  9. Task类的简单介绍
  10. openssl,加密,解密,https
  11. Android中定时器的3种实现方法
  12. C#可空类型(Nullable)
  13. 法度远程视频审讯系统有哪些主要功能?
  14. 27岁没文凭自学编程成为程序员难不难
  15. promise语法与用法、this指向和this指向修改
  16. 百度云直链获取优化版
  17. MySQL Workbench报错说 seems to be a different OS
  18. 非递归中序遍历二叉树
  19. 【ACWing】909. 下棋游戏
  20. 预推免的内耗---还好上岸了,要不就淹死了

热门文章

  1. 一个求整系数多项式的全部有理根的方法
  2. idea 编译时提示找不到符号
  3. python把工作簿拆分为工作表_python利用openpyxl拆分多个工作表的工作簿的方法
  4. apache服务上配置https安全与域名请求
  5. echarts数据包坐标拾取工具
  6. Redis4.0之持久化存储
  7. 二、npm scripts
  8. 04-AskDoctorForHelp-向医生寻求帮助
  9. grid设置时间格式
  10. XXXfragment that is not a fragment错误,fragment认不出来