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>
测试:如果上传尺寸过大,出现异常
相关推荐
在这个压缩包中包含的两个关键jar文件——`com.springsource.org.apache.commons.io-1.4.0.jar`和`com.springsource.org.apache.commons.fileupload1.2.0.jar`,就是实现SpringMVC文件上传所必需的。 **Apache ...
在SpringMVC框架中实现国际化、文件上传和下载功能是开发面向多语言用户的Web应用时常见的需求。以下从国际化、上传和下载三个部分详细阐述知识点。 国际化部分: 1. 国际化(I18N)在Web应用中是至关重要的,它能...
在深入学习SpringMVC的过程中,你还将了解到拦截器(Interceptor)、异常处理、数据绑定、国际化、验证、文件上传下载等高级特性。这些知识点有助于你构建功能丰富、性能优良的Web应用。随着经验的积累,你可以结合...
#### 二、Spring MVC 文件上传的核心组件——MultipartFile `MultipartFile`接口是Spring MVC提供的用于处理文件上传的主要接口。它实现了`ServletFileUpload`接口,并且提供了一系列方法来帮助开发者处理上传文件...
完整的Demo结合了springmvc——mybatis,实现了工具类文件上传下载,结合了Redis的初步使用,并且能使用threadlocal实现数据库动态切换,很适合初建项目做参考,适合初学者使用。
使用MultipartFile处理文件上传,而视图可以直接渲染文件流实现文件下载。 8. **异常处理** 可以通过@ControllerAdvice和@ExceptionHandler全局处理异常,提高代码的可维护性。 9. **RESTful风格** SpringMVC...
本篇文章将详细探讨在SSM框架下如何实现文件上传,并结合运行环境要求——Tomcat 7及以上版本,讲解相关技术要点。 首先,我们需要了解SpringMVC中的文件上传机制。SpringMVC通过`CommonsMultipartResolver`解析器...
SpringMVC提供了便捷的文件上传和下载支持,使用MultipartFile接口处理文件上传,通过ResponseEntity或StreamingResponseBody处理大文件下载。 9. **RESTful支持** SpringMVC 3.1加强了对RESTful风格的支持,允许...
【SpringMVC精品资源——OA管理系统】是一个基于SpringMVC框架和MyBatis持久层框架构建的企业级在线办公应用。这个系统集成了多种关键功能,包括流程审批、用户管理、文件上传下载以及消息处理,旨在提升企业内部...
6. **文件上传**:SpringMVC提供了处理文件上传的功能,通过`MultipartFile`接口,我们可以接收客户端上传的文件,并将其保存到服务器的指定位置。项目将展示如何配置文件上传处理器,以及处理文件大小限制和错误...
- 对上传文件进行校验,确保文件类型正确,防止恶意文件上传。 - 为避免路径遍历攻击,应使用相对路径且限定在特定目录下。 - 数据库中的路径应该加密存储,避免直接暴露。 5. **性能优化**: - 可以使用七牛云...
此项目是基于springMVC实现的,基本流程为从前台jsp页面使用Ajax文件上传导入excel文件(.xls(97-03)/.xlsx(07以后)),传到后台controller调用相应工具类解析后返回指定参数做后续处理. 1. POIUtil.java工具类 解析...
8、拦截器+文件上传下载 能学到什么:详细了解SpringMVC基础以及使用 阅读建议: 建议配合狂神教学视频使用:...
Spring MVC 学习总结(五)——校验与文件上传 目录 2.2.7、范围 2.2.8、其它注解 2.3、注解控制器参数 1.4、在UI中添加错误标签 1.5、测试运行 三、使用jQuery扩展插件Validate实现前端校验 3.1、jQuery扩展插件...
本项目采用了一个经典的Java技术栈——Spring、SpringMVC和MyBatis,构建了一个功能完善的网上商城管理系统。这个系统不仅实现了基本的电子商务功能,还考虑了国际化的支持以及图片的动态显示,充分展示了这三个框架...
7. **上传下载支持**:SpringMVC内置了处理文件上传和下载的功能。通过MultipartFile接口,我们可以方便地处理用户提交的文件,同时,也可以通过StreamingResponseBody实现大文件的下载。 8. **RESTful风格的支持**...
在处理文件上传时,`@RequestParam("file") MultipartFile file`可以捕获上传的文件。 源码实现方面,这些绑定机制都基于Spring MVC的核心组件——`HandlerMethodArgumentResolver`接口。Spring MVC通过一系列预...
12. **上传下载**:学习处理文件上传和下载的控制器方法,包括使用CommonsMultipartResolver处理多部分请求。 13. **SpringMVC与Spring整合**:讨论SpringMVC如何与Spring的核心功能如依赖注入(DI)、AOP(面向切...
SpringMVC作为流行的Java Web框架,支持多种文件上传方式,与Ajax结合可以实现这一功能。 首先,我们需要了解Ajax的核心——XMLHttpRequest对象。这个对象允许JavaScript在不刷新整个页面的情况下与服务器进行通信...
JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton