zoukankan      html  css  js  c++  java
  • Spring中使用StandardServletMultipartResolver进行文件上传

      从Spring3.1开始,Spring提供了两个MultipartResolver的实现用于处理multipart请求,分别是:CommonsMultipartResolver和StandardServletMultipartResolver。CommonsMultipartResolver使用common fileupload来处理multipart请求,所以在使用的时候必须引入相应的jar包。StandardServletMultipartResolver是基于Servlet3.0来处理multipart请求的,所以不需要引用其他jar包,但是必须使用支持Servlet3.0的容器才可以。

    Spring的配置

      在配置文件中,bean的id必须是multipartResolver,实例如下:

    <bean id="multipartResolver"
     class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
    </bean>

    web.xml的配置

      1.要注意web.xml节点使用的版本必须是3.0及以上

      2.注意servlet节点下的multipart-config节点的配置。区别与使用CommonsMultipartResolver进行文件上传时配置的不同。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        id="WebApp_ID" version="3.0">
    
        ····
        <servlet>
            <servlet-name>fileUpload</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <init-param>  
                <param-name>contextConfigLocation</param-name>  
                <param-value>classpath:fileUpload-servlet.xml</param-value>  
            </init-param>  
            <load-on-startup>0</load-on-startup>
            <multipart-config>
                <!--临时文件的目录-->
                <location>/data</location>
                <!-- 上传文件最大2M -->
                <max-file-size>2097152</max-file-size>
                <!-- 上传文件整个请求不超过4M -->
                <max-request-size>4194304</max-request-size>
            </multipart-config>
        </servlet>
        ....
    </web-app>

    Controller设置  

    @Controller
    @RequestMapping(value = "/file")
    public class FileController {
    
        /**
         * 在方法签名中使用MulitpartHttpServletRequest类型。
         * 
         * @param request
         * @return
         */
        @RequestMapping(value = "/commUploadB")
        @ResponseBody
        public JSONObject commUploadB(MultipartHttpServletRequest request) {
            JSONObject json = new JSONObject();
            json.put("succ", false);
            try {
                MultipartFile file = request.getFile("uploadFileB");// 与页面input的name相同
                File imageFile = new File("d:/upload2.jpg");// 上传后的文件保存目录及名字
                file.transferTo(imageFile);// 将上传文件保存到相应位置
                json.put("succ", true);
                return json;
            } catch (Exception e) {
                e.printStackTrace();
                return json;
            }
        }
    
        /**
         * 在方法签名中使用MultipartFile类型,并使用@RequestPart注解。
         * 
         * @param uploadFileC
         * @return
         */
        @RequestMapping(value = "/commUploadC")
        @ResponseBody
        public JSONObject commUploadC(@RequestPart("uploadFileC") MultipartFile uploadFileC) {
            JSONObject json = new JSONObject();
            json.put("succ", false);
            try {
                File imageFile = new File("d:/upload3.jpg");// 上传后的文件保存目录及名字
                uploadFileC.transferTo(imageFile);// 将上传文件保存到相应位置
                json.put("succ", true);
                return json;
            } catch (Exception e) {
                e.printStackTrace();
                return json;
            }
        }
    }
  • 相关阅读:
    CVE-2017-11826:Office Open XML 标签嵌套解析混淆漏洞
    未授权访问漏洞总结
    Linux提权—脏牛漏洞(CVE-2016-5195)
    Linux提权
    (翻译)OpenDocument and Open XML security (OpenOffice.org and MS Office 2007)
    SSH后门万能密码
    Linux中使用gdb dump内存
    在 x64dbg 中设置条件断点和条件记录断点
    Linux中的.bash_ 文件详解
    Photoshop 第二课 工具-钢笔的使用
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8612148.html
Copyright © 2011-2022 走看看