Spring MVC文件上傳

1、加入JAR

由於SpringMVC使用的是commons-fileupload實現,所以除了之前使用到的Spring MVC用到的一些JAR外,還需要下面兩個JAR: commons-fileupload-x.x.x.jar和commons-io-x.x.x.jar。

2、配置MultipartResolver處理器(mvc-servlet.xml)

<!-- 設置MultipartResolver用以文件上傳 -->
    <!-- 
        p:defaultEncoding請求的編碼格式,必須與JSP頁面的編碼一樣
        p:maxUploadSiz上傳文件的大小。5MB
        p:uploadTempDir上傳文件的臨時路徑,文件上傳完後,臨時目錄中的臨時文件會被自動清除
     -->
    <bean id="multipartResolver" 
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
        p:defaultEncoding="UTF-8"
        p:maxUploadSize="5242880"
        p:uploadTempDir="upload/temp"/>

3、Controller中處理

在Controller的方法中添加MultipartFile參數。該參數用於接收表單中file組件的內容

    /** 
     * 如果只是上傳一個文件,則只需要MultipartFile類型接收文件即可
     * 如果想上傳多個文件,那麼這裏就要用MultipartFile[]類型來接收文件,並且還要指定@RequestParam註解 
     * 並且上傳多個文件時,前臺表單中的所有<input type="file"/>的name都應該是file,否則參數裏的file無法獲取到所有上傳的文件 
     */
    @RequestMapping("upload")
    public ModelAndView upload(String name,@RequestParam("file") MultipartFile[] file,HttpServletRequest request) throws IllegalStateException, IOException{
        String realPath = request.getSession().getServletContext().getRealPath("/uploadFile");
        File pathFile = new File(realPath);

        if(!pathFile.exists()){
            pathFile.mkdirs();
        }
        for(MultipartFile f : file){
            f.transferTo(new File(realPath+"/"+f.getOriginalFilename()));
        }

        ModelAndView view = new ModelAndView();
        view.setViewName("/success");
        System.out.println("----------------");
        return view;
    } 

4、編寫頁面表單

注意enctype=”multipart/form-data”以及

<form action="user/upload.abc" enctype="multipart/form-data" method="post">
        <input type="text" name="name">
        <input type="file" name="file">
        <input type="file" name="file">
        <input type="submit" value="上傳">
</form>

5、 MultipartFile中的方法

使用getSize()方法獲得文件長度,以此決定允許上傳的文件大小。
使用isEmpty()方法判斷上傳文件是否爲空文件,以此決定是否拒絕空文件。
使用getInputStream()方法將文件讀取爲java.io.InputStream流對象。
使用getContentType()方法獲得文件類型,以此決定允許上傳的文件類型。
使用transferTo(dest)方法將上傳文件寫到服務器上指定的文件。

發佈了146 篇原創文章 · 獲贊 130 · 訪問量 78萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章