spring mvc 上传文件
来源:互联网 发布:java课设心得体会 编辑:程序博客网 时间:2024/05/16 17:40
SpringMVC文件上传 多文件上传实例
必须明确告诉DispatcherServlet如何处理MultipartRequest。
SpringMVC中提供了文件上传使用方式如下
配置xxx-servlet.xml,添加如下代码:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为1MB -->
<property name="maxUploadSize">
<value>1048576</value>
</property>
</bean>
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为1MB -->
<property name="maxUploadSize">
<value>1048576</value>
</property>
</bean>
注意这里的文件尺寸实际上只的是所以文件总大小
如果配置了文件大小就以为这你需要配置异常信息控制
所以需要配置异常显示
<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 -->
<prop
key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
</props>
</property>
</bean>
<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 -->
<prop
key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
</props>
</property>
</bean>
或者偷懒点,不设置大小,则最终默认是值为不限制。如果非要控制返回信息,可以考虑在地应以的异常处理中返回指定格式数据,例如JSON
配置完了页面上一如既往的需要再form表单中增加:enctype="multipart/form-data"
然后就是需要处理的action了,可以有两种方式
第一种方式:
public String login( @RequestParam MultipartFile file, Model model) {
………………
}
public String login( @RequestParam MultipartFile file, Model model) {
………………
}
其中file的名字必须保证与<input type=file>中的那么属性值保持一致,若果是多文件上传,则考虑使用
public String login(@Valid UserInfo userInfo, BindingResult result, @RequestParam MultipartFile[] files, Model model) {
………………
}
public String login(@Valid UserInfo userInfo, BindingResult result, @RequestParam MultipartFile[] files, Model model) {
………………
}
单文件可以省略 @RequestParam 多文件则不可省略
第二种方式:
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// 转型为MultipartHttpRequest:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得文件:
MultipartFile file = multipartRequest.getFile(" file ");
}
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// 转型为MultipartHttpRequest:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得文件:
MultipartFile file = multipartRequest.getFile(" file ");
}
这样也可以获取到文件
其实刚才首先需要配置是加入两个 jar包:
commons-fileupload-1.2.2.jar
commons-io-2.1.jar
spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方
1.form的enctype=”multipart/form-data” 这个是上传文件必须的
2.applicationContext.xml中 <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/> 关于文件上传的配置不能少
大家可以看具体代码如下:
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
- <display-name>webtest</display-name>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- /WEB-INF/config/applicationContext.xml
- /WEB-INF/config/codeifAction.xml
- </param-value>
- </context-param>
- <servlet>
- <servlet-name>dispatcherServlet</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/config/codeifAction.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <!-- 拦截所有以do结尾的请求 -->
- <servlet-mapping>
- <servlet-name>dispatcherServlet</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.do</welcome-file>
- </welcome-file-list>
- </web-app>
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:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
- default-lazy-init="true">
- <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" lazy-init="false" />
- <!-- 另外最好还要加入DefaultAnnotationHandlerMapping,不然会被 XML或其它的映射覆盖! -->
- <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
- <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
- <!-- 支持上传文件 -->
- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
- </beans>
codeifAction.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
- default-lazy-init="true">
- <bean id="uploadAction" class="com.codeif.action.UploadAction" />
- </beans>
UploadAction.java
- package com.codeif.action;
- import java.io.File;
- import java.util.Date;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.ModelMap;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.multipart.MultipartFile;
- @Controller
- public class UploadAction {
- @RequestMapping(value = "/upload.do")
- public String upload(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, ModelMap model) {
- System.out.println("开始");
- String path = request.getSession().getServletContext().getRealPath("upload");
- String fileName = file.getOriginalFilename();
- // String fileName = new Date().getTime()+".jpg";
- System.out.println(path);
- File targetFile = new File(path, fileName);
- if(!targetFile.exists()){
- targetFile.mkdirs();
- }
- //保存
- try {
- file.transferTo(targetFile);
- } catch (Exception e) {
- e.printStackTrace();
- }
- model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName);
- return "result";
- }
- }
index.jsp
- <%@ page pageEncoding="utf-8"%>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>上传图片</title>
- </head>
- <body>
- <form action="upload.do" method="post" enctype="multipart/form-data">
- <input type="file" name="file" /> <input type="submit" value="Submit" /></form>
- </body>
- </html>
WEB-INF/jsp/下的result.jsp
- <%@ page pageEncoding="utf-8"%>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>上传结果</title>
- </head>
- <body>
- <img alt="" src="${fileUrl }" />
- </body>
- </html>
- spring mvc 文件上传
- spring MVC 文件上传
- Spring MVC文件上传
- Spring MVC文件上传
- spring mvc 文件上传
- Spring mvc 文件上传
- spring mvc 文件上传
- spring mvc 上传文件
- spring mvc 上传文件
- spring mvc 文件上传
- spring mvc 上传文件
- spring mvc文件上传
- Spring MVC 文件上传
- spring mvc 文件上传
- spring mvc文件上传
- Spring MVC文件上传
- spring mvc 文件上传
- spring mvc 上传文件
- tornado 如何传递函数到模板
- NoSQL数据库的分布式算法
- 杭电2647 Reward(拓扑排序)
- Hibernate_13_QBC查询
- css外部文件的引用方式有哪几种
- spring mvc 上传文件
- PDF转换器可以转换哪些格式
- 在Android程序中调用摄像头功能
- max系统的FTP简单命令
- 行业网站参考
- Linux环境下qt-everywhere-opensource-src-4.8.6配置
- ios tableview 那些事(二十六)UITableViewController 多选操作
- Android平台Cocos2d-x读取相册图片信息。
- jquery - 左边栏菜单隐藏/显示