北京 切换校区

全国24小时免费热线

400-009-1906

Spring MVC 处理 Multipart/form-data

时间:2019-02-22   来源:尚学堂   阅读:119
首页> Spring MVC 处理 Multipart/form-data

Multipart/form-data

Multipart/form-data为表单的MIME编码属性之一,共有三个值

①application/x-www-form-urlencoded

②multipart/form-data

③text/plain

①为Html表单默认传输编码类型

②是表单上传的非文本的内容,传递的是文件数据,设置该属性再配合post请求方式从而实现文件上传

③是传输为纯文本的意思,在发邮件时要设置这种编码,拿text/plain和text/html做比较,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上

上述所提到的MIME,它的英文全称是"MultipurposeInternetMailExtensions"多功能Internet邮件扩充服务,它是一种多用途网际邮件扩充协议。通过MIME,浏览器的再请求,会告诉服务器接收的数据是什么类型

 

SpringMVC处理Multipart/form-data

两种实现方式:

1、CommonsMultipartResolver:依赖于Apache

2、StandardServletMultipartResolver:依赖于Servlet3.0,SpringBoot默认支持该方式

一、配置解析器

1、CommonsMultipartResolver的配置

弊端:无法设置请求整体的最大容量

(1)声明Bean和配置上传参数:

<bean id="multipartResolver" 
   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="uploadTempDir" value="/temp"/>    <!--设置上传目录/temp -->
        <property name="maxUploadSize" value="2097152"/>   <!--最大文件容量设置为2M-->
        <property name="maxInMemorySize" value="0"/>    · <!--最大的内存大小设置为0,超过0就写入磁盘--> 
    </bean>

2、StandardServletMultipartResolver的配置

(1)声明Bean:

<bean id="multipartResolver" 
    class="org.springframework.web.multipart.support.StandardServletMultipartResolver”>
@Bean(name = "multipartResolver")
public StandardServletMultipartResolver getStandardServletMultipartResolver(){
          return new StandardServletMultipartResolver();
}

(2)配置上传参数

~web.xml配置

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <multipart-config>
        <!--上传到/temp 目录-->
      <location>/temp/upload</location>
        <!--文件大小为2M-->
      <max-file-size>2097152</max-file-size>
        <!--整个请求不超过4M-->
      <max-request-size>4194304</max-request-size>
        <!--大于0M的所有文件都要写入磁盘-->
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

~配置类中配置

@Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        //上传到/temp 目录,文件大小为2M,整个请求不超过4M,且所有文件都要写入磁盘
        registration.setMultipartConfig(new MultipartConfigElement("E:\\temp",2097152,4194304,0));
    }

二、SpringMVC处理

1、表单:

<form action="/save" method="post" enctype="multipart/form-data">
          <input type="file" name="pic">
          <input type="submit">
   </form>

2、MVC接收:

@RequestMapping(value = "/save",method = RequestMethod.POST)
    public String getHome(MultipartFile pic) throws IOException {
        Files.copy(pic.getInputStream(), Paths.get(ServletContext.getRealPath("/temp"),pic.getOriginalFilename));
        return null;
    }

相关资讯

  • 北京校区
  • 山西校区
  • 郑州校区
  • 武汉校区
  • 四川校区
  • 长沙校区
  • 深圳校区
  • 上海校区
  • 广州校区
  • 保定招生办

北京海淀区校区(总部):北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
咨询电话:400-009-1906 / 010-56233821
面授课程: JavaEE培训大数据就业班培训大数据云计算周末班培训零基础大数据连读班培训大数据云计算高手班培训人工智能周末班培训人工智能+Python全栈培训H5+PHP全栈工程师培训

山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

郑州学区地址:河南电子商务产业园6号楼4层407
咨询电话:0371-55177956

武汉学区地址:湖北省武汉市江夏区江夏大道26号 宏信悦谷创业园4楼
咨询电话:027-87989193

四川学区地址:成都市高新区锦晖西一街99号布鲁明顿大厦2栋1003室
咨询电话:028-65176856 / 13880900114

网址:http://www.cssxt.com/
咨询电话:0731-83072091

深圳校区地址:深圳市宝安区航城街道航城大道航城创新创业园A4栋210(固戍地铁站C出口)
咨询电话:0755-23061965 / 18898413781

上海尚学堂松江校区地址:上海市松江区荣乐东路2369弄45号绿地伯顿大厦2层
咨询电话:021-67690939

广州校区地址:广州市天河区元岗横路31号慧通产业广场B区B1栋6楼尚学堂(地铁3号线或6号线到“天河客运站”D出口,右拐直走约800米)
咨询电话:020-2989 6995

保定招生办公室

地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室

电话:15132423123

Copyright 2006-2019 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
媒体联系:18610174079 闫老师  

Java基础班,免费试学三周