天天看點

SpringMVC multipart檔案上傳

一、介紹

   spring内建的multipart支援網絡程式檔案上傳。我們可以通過配置MultipartResolver來啟動上傳支援。它定義在org.springframework.web.multipart包中。spring是通過使用Commons FileUpload插件來完成MultipartResolver的。

   預設情況下,spring不處理multipar的form資訊,因為開發者預設會自己去處理這部分資訊,當然我們可以随時打開這個支援。這樣對于每一個請求,都會檢視它是否包含multipart的資訊,如果沒有則按流程繼續執行。如果發現有,就會交給已經被聲明的MultipartResolver進行處理,然後我們就能像處理其他普通屬性一樣處理檔案上傳了。

二、使用MultipartResolver

  下面的例子顯示了如何使用CommonsMultipartResolver

<bean id="multipartResolver"  

    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  

    <!-- one of the properties available; the maximum file size in bytes -->  

    <property name="maxUploadSize" value="100000"/>  

</bean>  

當然,我們要把所需的jar包放到lib中, 就是commons-fileupload.jar.

三、處理一個檔案上傳的form

   當MultipartResolver處理完成以後,請求被處理成和普通請求一樣。下面是頁面檔案。

<html>  

    <head>  

        <title>Upload a file please</title>  

    </head>  

    <body>  

        <h1>Please upload a file</h1>  

        <form method="post" action="/form" enctype="multipart/form-data">  

            <input type="text" name="name"/>  

            <input type="file" name="file"/>  

            <input type="submit"/>  

        </form>  

    </body>  

</html>  

下一步是建立一個controller來處理檔案上傳。controller也和其他的一樣,除了在我們的方法參數中使用MultipartHttpServletRequest或者MultipartFile。

@Controller  

public class FileUpoadController {  

    @RequestMapping(value = "/form", method = RequestMethod.POST)  

    public String handleFormUpload(@RequestParam("name") String name,  

        @RequestParam("file") MultipartFile file) {  

        if (!file.isEmpty()) {  

            byte[] bytes = file.getBytes();  

            // store the bytes somewhere  

           return "redirect:uploadSuccess";  

       } else {  

           return "redirect:uploadFailure";  

       }  

    }  

}  

最後,我們要聲明我們的controller和multipar解析器

<beans>  

    <bean id="multipartResolver"  

        class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>  

    <!-- Declare explicitly, or use <context:annotation-config/> -->  

    <bean id="fileUploadController" class="examples.FileUploadController"/>  

</beans>   

--------------------------

如果你對java、swing、各種架構、javascript、css、linux、資料庫程式設計等知識很感興趣,或者正在從事這些工作,請加入我建的群:464696550