`
234390216
  • 浏览: 10232988 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462624
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775518
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398358
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395022
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679983
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530892
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183946
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467929
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151396
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68153
社区版块
存档分类
最新评论

SpringMVC文件上传对Servlet3的支持

阅读更多

SpringMVC内置了对文件上传的支持,它需要我们配置一个MultipartResolver,Servlet3之前它只有一个基于commons-fileupload的实现CommonsMultipartResolver,笔者以前也写过一篇基于CommonsMultipartResolver的文件上传的博文,地址是http://elim.iteye.com/blog/1188116。Servlet3之后SpringMVC提供了另一个基于Servlet3的文件上传的实现,叫StandardServletMultipartResolver。本文将只介绍基于Servlet3的文件上传支持,作为以前写的基于commons-fileupload的实现的博文的一个补充。

首先需要定义一个StandardServletMultipartResolver类型的bean,对应的id默认情况下必须为multipartResolver,具体可以查看DispatcherServlet.initMultipartResolver()。

<!-- 上传文件的解析器 -->
<bean id="multipartResolver"
    class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</bean>

然后需要启用Servlet3的文件上传支持,需要我们在web.xml中定义DispatcherServlet时定义<multipart-config/>,如果是基于注解配置的,则需要使用@javax.servlet.annotation.MultipartConfig

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <!-- 启用Servlet3文件上传支持 -->
    <multipart-config>
        <file-size-threshold>512000</file-size-threshold>
        <location></location>
        <max-file-size></max-file-size>
        <max-request-size></max-request-size>
    </multipart-config>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

启用了基于Servlet3的文件上传支持时,我们在Controller中有四种方式来接收上传的文件。

  • 通过Spring的org.springframework.web.multipart.MultipartFile直接接收。
  • 通过Servlet3提供的javax.servlet.http.Part接收。
  • 通过Spring的org.springframework.web.multipart.MultipartHttpServletRequest的getFile()获取。
  • 通过Servlet3的javax.servlet.http.HttpServletRequest的getPart()获取。
@RequestMapping(value="doupload", method=RequestMethod.POST)
@ResponseBody
public Object doUpload(@RequestParam("file1") MultipartFile file1, 
@RequestParam("file2") Part file2,
        MultipartHttpServletRequest multiRequest, HttpServletRequest request) 
throws Exception {
    //保存文件
    Map<String, Object> result = new HashMap<>();
    result.put("file1.contentType", file1.getContentType());
    result.put("file1.size", file1.getSize());
    result.put("file2.contentType", file2.getContentType());
    result.put("file2.size", file2.getSize());
    //其它信息可以参考各自的API
    
    
    //也可以通过MultipartHttpServletRequest的API获取文件
    file1 = multiRequest.getFile("file1");//获取file1
    file1 = multiRequest.getFile("file2");//获取file2
    MultiValueMap<String, MultipartFile> multiFileMap
         = multiRequest.getMultiFileMap();//所有的文件
    
    
    //如果是基于Servlet3的文件上传,也可以通过HttpServletRequest获取文件
    file2 = request.getPart("file1");
    file2 = request.getPart("file2");
    Collection<Part> parts = request.getParts();//获取所有的文件
    if (multiFileMap != null && parts != null) {
        
    }
    return result;
}

(本文是基于Spring4.1.0所写)

0
0
分享到:
评论

相关推荐

    SpringMVC文件上传Demo代码

    这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们需要在SpringMVC的配置文件(如`servlet-context.xml`)中启用多部分支持。这通常涉及到注册一个`...

    SpringMVC文件上传案例

    这个"SpringMVC文件上传案例"展示了如何在Eclipse开发环境中实现这一过程。下面我们将详细探讨涉及的知识点。 首先,我们需要理解SpringMVC的核心概念。SpringMVC是Spring框架的一部分,它是一个用于构建Web应用的...

    基于springMVC的文件上传功能

    在SpringMVC的配置文件(如`servlet-context.xml`)中,你需要配置`&lt;mvc:annotation-driven&gt;`元素来启用基于注解的控制器,同时添加`CommonsMultipartResolver`解析器,用于处理多部分请求,例如文件上传。...

    SpringMVC文件的上传与下载(包括单一文件与多文件上传,两种下载方式)

    2. 配置Spring MVC:在`dispatcher-servlet.xml`中配置MultipartResolver,用于处理文件上传。例如,使用CommonsMultipartResolver: ```xml &lt;property name="maxUploadSize" value="10485760" /&gt; &lt;!-- 设置最大...

    springMVC文件上传依赖包

    "springMVC文件上传依赖包"就是针对这个需求提供的一组必备组件。在这个压缩包里,我们有两个重要的文件: 1. `com.springsource.org.apache.commons.io-1.4.0.jar`: 这是Apache Commons IO库的一个版本,它提供了...

    SpringMVC文件增删改查(上传、更新、下载、删除)

    总结,SpringMVC提供了丰富的支持来进行文件操作,包括文件上传、下载、更新和删除。理解并掌握这些知识点,能够帮助开发者构建功能完善的Web应用,处理各种文件相关的业务场景。同时,合理组织项目结构,如创建...

    springMVC 文件上传jar文件及源码

    6. **文件下载**:与文件上传相对应,Spring MVC同样支持文件下载。我们可以使用`HttpServletResponse`的`setHeader`方法设置响应头,指导浏览器进行文件下载,然后将文件内容写入响应流。 在深入学习Spring MVC...

    springmvc框架的文件上传 下载

    在这个项目"springmvc框架的文件上传 下载"中,你可能会遇到如404错误等常见问题,下面将详细介绍SpringMVC中文件上传和下载的实现及其可能遇到的问题。 **文件上传** 1. **配置**: 首先,你需要在`dispatcher-...

    springMVC图片上传示例

    通过这个示例项目,开发者可以学习到SpringMVC处理文件上传的核心技术,以及如何结合文本字段进行数据交互,这对于构建具有文件上传功能的Web应用至关重要。同时,此项目也展示了如何在实际开发中实现图片预览,提高...

    SpringMVC-11 文件上传

    在本教程"SpringMVC-11 文件上传"中,我们将深入探讨如何使用Spring MVC来实现这一功能,特别是借助Apache Commons库中的`CommonsMultipartResolver`组件。 **一、MultipartResolver的角色** 在Spring MVC中,`...

    Spring下的子框架SpringMVC实现单个文件上传功能

    SpringMVC作为Spring框架的一部分,提供了强大的支持来处理文件上传任务。本文将详细介绍如何在SpringMVC项目中实现单个文件的上传功能。 #### 二、准备工作 在开始实现文件上传功能之前,我们需要做一些准备工作,...

    springmvc实现文件上传jar包

    2. **配置Spring MVC**:在Spring MVC的配置文件(如`dispatcher-servlet.xml`)中,你需要开启MultipartResolver,这将处理文件上传的请求。通常我们会使用`CommonsMultipartResolver`,如下所示: ```xml &lt;!--...

    SpringMVC之表单提交===③===多文件上传表单

    总结来说,Spring MVC提供了便利的多文件上传支持,通过`CommonsMultipartResolver`解析multipart请求,并通过Controller处理文件上传。开发者需要关注文件安全、异常处理以及依赖管理,确保功能的稳定和安全。通过...

    文件上传、下载代码,servlet版本、springmvc版本

    在文件上传方面,Servlet 3.0及以上版本提供了更方便的支持,允许直接处理multipart/form-data类型的表单数据。文件下载则通常通过设置响应头来控制,如Content-Type和Content-Disposition。 首先,让我们看看...

    springmvc文件上传

    通过以上步骤,你可以在Eclipse中搭建一个基本的SpringMVC文件上传系统。实际项目中可能需要进一步优化,如添加进度条显示、多文件上传支持、异步上传等特性,以提升用户体验。同时,确保遵循最佳实践,提高系统的...

    springmvc+ajax上传例子

    3. **配置SpringMVC**:在`spring-servlet.xml`或使用Java配置类中,配置`CommonsMultipartResolver`为multipart resolver,以处理文件上传。 ```xml &lt;!-- 设置最大上传文件大小 --&gt; ...

    SpringMVC文件上传示例

    创建一个HTML表单,使用`enctype="multipart/form-data"`来支持文件上传。 ```html 上传 ``` 3. **编写控制器** 在Spring MVC的控制器中,我们需要定义一个处理文件上传的请求方法。使用`@RequestParam...

    springMVC文件下载代码

    SpringMVC是一个强大的Java web开发框架,用于构建高效、可维护的Web应用程序。在这个实例中,我们将探讨如何...在这个实例中,提供的"springMVC文件上传.txt"文件可能包含更详细的代码实现或步骤解释,供学习者参考。

    springMVC带上传文件

    4. **文件上传处理**:文件上传涉及`CommonsMultipartResolver`,这是Spring MVC支持的MultipartFile解析器,需要在`spring-servlet.xml`中配置。在控制器中,可以声明一个`MultipartFile`类型的参数,Spring MVC会...

Global site tag (gtag.js) - Google Analytics