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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM