zoukankan      html  css  js  c++  java
  • spring multipart源码分析:

    1、MultipartResolver

         MultipartResolver接口提供了spring mvc的上传视图,MultipartResolver实例在请求转交给handlermapping之前。 也就是说DispatcherServlet ,在请求映射的时候,若找到MultipartResolver这个实例的话,

         就直接把请求转交给MultipartResolver

         

    /**
         * Determine if the given request contains multipart content.
         * <p>Will typically check for content type "multipart/form-data", but the actually
         * accepted requests might depend on the capabilities of the resolver implementation.
         * @param request the servlet request to be evaluated
         * @return whether the request contains multipart content
         */
        boolean isMultipart(HttpServletRequest request);
    
        /**
         * Parse the given HTTP request into multipart files and parameters,
         * and wrap the request inside a
         * {@link org.springframework.web.multipart.MultipartHttpServletRequest}
         * object that provides access to file descriptors and makes contained
         * parameters accessible via the standard ServletRequest methods.
         * @param request the servlet request to wrap (must be of a multipart content type)
         * @return the wrapped servlet request
         * @throws MultipartException if the servlet request is not multipart, or if
         * implementation-specific problems are encountered (such as exceeding file size limits)
         * @see MultipartHttpServletRequest#getFile
         * @see MultipartHttpServletRequest#getFileNames
         * @see MultipartHttpServletRequest#getFileMap
         * @see javax.servlet.http.HttpServletRequest#getParameter
         * @see javax.servlet.http.HttpServletRequest#getParameterNames
         * @see javax.servlet.http.HttpServletRequest#getParameterMap
         */
        MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException;
    
        /**
         * Cleanup any resources used for the multipart handling,
         * like a storage for the uploaded files.
         * @param request the request to cleanup resources for
         */
        void cleanupMultipart(MultipartHttpServletRequest request);
    View Code

      MultipartResolver接口提供了3个方法:

          boolean isMultipart(HttpServletRequest request): 检查当前请求是否是multipart content type

       resolveMultipart: 将httprequest转换成MultipartHttpServletRequest 

          

          已知的子类: CommonsMultipartResolverStandardServletMultipartResolver

    1. 第一个需要使用 Apache 的 commons-fileupload 等 jar 包支持,但它能在比较旧的 servlet 版本中使用。
    2. 第二个不需要第三方 jar 包支持,它使用 servlet 内置的上传功能,但是只能在 Servlet 3 以上的版本使用。

    2、multipartRequest

     

      multipartRequest接口可以讲request对象封装成multipartRequest,提取请求的信息,MultipartReques类主要是对文件上传进行的处理。

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/kimobolo/p/7110575.html
Copyright © 2011-2022 走看看