SpringMVC文件上传:
需要jar包:common-fileupload.jar common-io.jar
在SpringMVC中,文件上传功能可以由即插即用的CommonsMultipartResolver解析器组件实现,它在org.springframework.web.multipart包里。因此需要实例化此组件。
使用方法:
1.配置文件
<!-- 打开文件上载支持 id名字不能写其他的 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 限制上载文件大小为 100K byte 如超过100K会抛出异常--> <property name="maxUploadSize" value="102400" /> </bean>
2,jsp页面中的表单设置:
a) 请求方式必须要用POST方式
b) enctype必须设置"multipart/form-data"
<body> <h1>文件上传</h1> <c:url var="url" value="/upload/file-upload.from"></c:url> <form action="${url }" method="post" enctype="multipart/form-data"> 图片: <input type="file" name="image" /> <br /> 作者: <input type="text" name="author"> <br /> <input type="submit" value="提交"> </form> </body>
3,Controller实现
注意:fileUpload(MultipartFile image, String author, ModelMap map,HttpServletRequest req) 这个方法中image的名字要和jsp页面中定义的一致。
或者使用:fileUpload(@RequestParam(value="image")MultipartFile image, ....)
@Controller @RequestMapping("/upload") public class UploadController { // 显示上传页面 @RequestMapping("/toUpload.from") public String toUploadForm() { return "upload"; } @RequestMapping("/file-upload.from") public String fileUpload(MultipartFile image, String author, ModelMap map, HttpServletRequest req) throws Exception { // image.getOriginalFilename() //文件名字 // image.getName() //是上传的属性名称 // image.getBytes() //是上载的全部byte数据 // image.getInputStream() //获取文件数据流, // image.getContentType() //获取文件的类型 image/jpg , image/png 等等 // 1,创建目标文件夹 /WEB-INF/images String path = "/WEB-INF/images"; path = req.getSession().getServletContext().getRealPath(path); System.out.println("实际路径:" + path); File dir = new File(path); if (!dir.exists()) { dir.mkdir(); } String uuid = UUID.randomUUID().toString(); String filename = image.getOriginalFilename(); // 123.png String img = uuid + filename.substring(filename.lastIndexOf(".")); // 获取文件名:uuid+".png" String txt = uuid + ".txt"; // 写出图片文件 FileOutputStream imgOut = new FileOutputStream(new File(dir, img)); imgOut.write(image.getBytes()); imgOut.close(); // 写出元数据文本文件 PrintWriter out = new PrintWriter(new File(dir, txt)); out.println("原始文件名:" + filename); out.println("作者:" + author); out.println("ContentType:" + image.getContentType()); out.println(image.getBytes()); out.close(); // 返回到成功页面 map.put("msg", "成功上载" + filename); return "success"; } }
下面看完整的ApplicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <context:component-scan base-package="com.lydia.web" /> <!-- 支持@RequestMapping请求和Controller映射 --> <mvc:annotation-driven /> <!-- 打开文件上载支持 id名字不能写其他的 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 限制上载文件大小为 100K byte 如超过100K会抛出异常--> <property name="maxUploadSize" value="102400" /> </bean> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"> </property> <property name="suffix" value=".jsp"> </property> </bean> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Exception">error</prop> <!-- <prop key="com.tarena.web.DemoException">error</prop> --> </props> </property> </bean> </beans>
测试:如果上传尺寸过大,出现异常
相关推荐
极客学院java中级课程,SpringMVC系列教材——SpringMVC 实现文件上传下载、国际化等
完整的Demo结合了springmvc——mybatis,实现了工具类文件上传下载,结合了Redis的初步使用,并且能使用threadlocal实现数据库动态切换,很适合初建项目做参考,适合初学者使用。
android——SpringMVC实现批量文件上传 HTTP协议和HttpClient2种方式实现批量上传
此项目是基于springMVC实现的,基本流程为从前台jsp页面使用Ajax文件上传导入excel文件(.xls(97-03)/.xlsx(07以后)),传到后台controller调用相应工具类解析后返回指定参数做后续处理. 1. POIUtil.java工具类 解析...
Spring MVC 学习总结(五)——校验与文件上传 目录 2.2.7、范围 2.2.8、其它注解 2.3、注解控制器参数 1.4、在UI中添加错误标签 1.5、测试运行 三、使用jQuery扩展插件Validate实现前端校验 3.1、jQuery扩展插件...
JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton
springmvc文件上传 shiro安全框架 Redis缓存 JavaMail邮件 基于aop切面的日志管理 Layui前端框架 登录验证码 富文本输入框 md5加密加盐 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的Java学习...
文件包括:搭建流程、表结构设计说明、项目代码、环境安装包、数据库脚本。 技术包括:Spring、SpringMVC、Mybatis、MySQL、JSP、BootStrap、AJAX、HTML、CSS、JS。 功能包括: 管理员:登录登出、景点管理、门票...
个人财务管理系统,springmvc,mysql,有后台分页,富文本编辑器,附件上传,文件上传,时间选择器等等的源代码,保证可以运行,带导入视频
食堂管理员:登录、菜品管理(可上传图片)、菜品类别管理、配送员管理、优惠劵管理、订单分配管理、投诉中心、配送订单查看、数据统计等等。 系统管理员:登录、用户管理、角色管理、系统权限菜单管理等 用户:登录...
后台框架:SSM(Spring+SpringMvc+Mybatis) 前端框架:基于Bootstrap 主要功能 1.登录管理 注册——门店添加、手机短信验证 登录——门店验证、职务验证、员工姓名验证、手机号码和密码验证 2.客户管理 客户资料...
4.5.1 文件上传配置 98 4.5.2 自定义HttpMessageConverter 101 4.5.3 服务器端推送技术 106 4.6 Spring MVC 的测试 113 4.6.1 点睛 113 4.6.2 示例 114 第三部分 实战Spring Boot 第5 章 Spring Boot 基础 122 5.1 ...
习题模块:不做练习,每种语法————只有5道例题,每道有解析即可 视频播放模块:对视频进行分类,可以按照视频分类和关键字进行查询,对该视频可以进行评论; 管理员功能: 对用户添加、修改、删除; 回答留言...
提供了常用的系统功能,内置1000多个小图标,可自定义上传和带缓存的数据字典。 f.?为了提高UI开发效率,内置一套常用的UI标签,包含了分页标签、查询标签、数据字典标签。 g.?提供了超级用户的功能(id=1的用户自动...
基于SSM的网上二手书店————使用技术:SSM、LayUI、echarts ## 运行环境 本网上二手书店是采用企业应用架构:Spring + SpringMVC + MyBatis的开发架构。网上二手书店运行环境如表所示。 | **项目** | *...