zoukankan      html  css  js  c++  java
  • 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,它的英文全称是"Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议。通过MIME,浏览器的再请求,会告诉服务器接收的数据是什么类型

    Spring MVC 处理 Multipart/form-data

           两种实现方式:

             1、CommonsMultipartResolver  :  依赖于Apache 

             2、StandardServletMultipartResolver  :  依赖于Servlet 3.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) 配置上传参数

                  1、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>
    View Code

                  2、配置类中配置

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

          

    二、Spring MVC 处理

             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;
        }    

            

  • 相关阅读:
    4.2 手指绘图
    Linux-linux常用操作
    gdb的使用
    时钟的函数
    动态链接库
    简单算法整理
    win的使用
    c语言格式化打印
    Symfony2 学习笔记之控制器
    Symfony2 学习笔记之系统路由
  • 原文地址:https://www.cnblogs.com/stamp/p/java_base_upFile.html
Copyright © 2011-2022 走看看