csq39 发表于 2017-5-27 14:49:02

Spring MVC4使用Servlet3 MultiPartConfigElement文件上传

<h3>
                <p>
                        简短的概述                </p>
        </h3><p>
        </p><p>
                在这篇文章中,我们将使用Servlet3.0以及javax.servlet.MultipartConfigElement,为了激活&nbsp;Servlet3.0环境和Spring&nbsp;的Multipart支持,你需要做以下:        </p><p>
        </p><p>
                1.添加 StandardServletMultipartResolver Bean 在 Spring 配置。这是一个标准实现 MultipartResolver 接口,基于Servlet3.0&nbsp;javax.servlet.http.Part&nbsp;API。        </p><p>
        </p><p>
                2.&nbsp;启用在Servlet3.0环境的多解析(MultiParsing)。要做到这一点,你有多种方案可供选择。        </p><p>
        </p><ul class=" list-paddingleft-2"><li><p>
                        方案A.&nbsp;对方案性 Servlet 注册设置
javax.servlet.MultipartConfigElement。MultipartConfigElement是
javax.servlet.annotation.MultipartConfig
的注释值(如选择C所述)的简单Java类表示。&nbsp;这篇文章将特别侧重于这个选择。                </p></li><li><p>
                        方案B.&nbsp;如果您使用基于XML的配置,可以在web.xml中在servlet配置声明&nbsp;multipart-configsection&nbsp;部分,如下图所示:</p><pre>&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;SpringDispatcher&lt;/servlet-name&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;multipart-config&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;location&gt;/tmp&lt;/location&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max-file-size&gt;5242880&lt;/max-file-size&gt;&lt;!--5MB--&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;max-request-size&gt;20971520&lt;/max-request-size&gt;&lt;!--20MB--&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;file-size-threshold&gt;0&lt;/file-size-threshold&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/multipart-config&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet&gt;</pre><p>
                </p></li><li><p>
                        方案C.&nbsp;可以创建一个自定义 Servlet 和 javax.servlet.annotation.MultipartConfig 标注其标注,如下图所示:</p><pre>@WebServlet(name&nbsp;=&nbsp;&quot;fileUploadServlet&quot;,&nbsp;urlPatterns&nbsp;=&nbsp;{&quot;/upload&quot;})
@MultipartConfig(location=/tmp,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileSizeThreshold=0,&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxFileSize=5242880,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;5&nbsp;MB
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxRequestSize=20971520)&nbsp;&nbsp;&nbsp;//&nbsp;20&nbsp;MB
public&nbsp;class&nbsp;FileUploadServlet&nbsp;extends&nbsp;HttpServlet&nbsp;{
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;doPost(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;throws&nbsp;ServletException,&nbsp;IOException&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//handle&nbsp;file&nbsp;upload
&nbsp;&nbsp;&nbsp;&nbsp;}</pre><p>
                </p></li></ul><p>
        </p><p>
                话虽这么说,我们将专注于在这个例子中选择。        </p><p><br/></p>
页: [1]
查看完整版本: Spring MVC4使用Servlet3 MultiPartConfigElement文件上传