1. 程式人生 > >文章測試3

文章測試3

frame submit tip 編碼 請求編碼 alt ise 程序 郵件附件

文件的上傳和下載是項目開發中最常用的功能,例如圖片的上傳和下載、郵件附件的上傳和下載等。

接下來,將對Spring MVC環境中文件的上傳和下載進行詳細的講解。

一.文件上傳

多數文件上傳都是通過表單形式提交給後臺服務器的,因此,要實現文件上傳功能,就需要提供一個文件上傳的表單,而該表單必須滿足以下3個條件:

1)form表單的method屬性設置為post

2)form表單的enctype屬性設置為multipart/form-data

3)提供<input type=”file” name=”filename” multiple=”multiple” />的文件上傳輸入框。

文件上傳表單的實例代碼如下:

<form action="uploadUrl" method="post" enctype="multipart/form-data">
<input type="file" name="filename" multiple="multiple" />
<input type="submit" value="文件上傳" />
</form>

Spring MVC為文件上傳提供了直接的支持,這種支持是通過MultipartResolver(多部件解析器)對象實現的。MultipartResolver是一個接口對象,需要通過它的實現類CommonsMultipartResolver來完成文件上傳工作。在Spring MVC中使用MultipartResolver對象非常簡單,只需要在配置文件中定義MultipartResolver接口的Bean即可,其具體配置方式如下:

技術分享圖片
<bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”>
<!-- 設置請求編碼格式,必須與JSP中的pageEncoding屬性一致 -->
<property name=”defaultEncoding” value=”UTF-8” />
<!-- 設置允許上傳文件的最大值(2MB),單位為字節 -->
<property name=”maxUploadSize” value=”2097152” />
</bean>
技術分享圖片

通過<property>元素可以對文件解析類CommonsMultipartResolver的如下屬性進行配置。

1)maxUploadSize:上傳文件最大長度(以字節為單位)

2)maxInMemorySize:緩存中的最大尺寸

3)defaultEncoding:默認編碼格式

4)resolverLazily:推遲文件解析,以便在Controller中捕獲文件大小異常

註:在配置CommonsMultipartResolver時必須指定該Bean的id為multipartResolver

需要導入支持文件上傳的相關JAR包,通過Apache官網地址“http://commons.apache.org/”下載(進入該網址後,在Apache Conmmons Proper下方列表的Components列中找到FileUpload和IO,單擊鏈接後,即可在打開頁面找到下載鏈接)具體如下:

1)commons-fileupload-1.3.2.jar

2)commons-io-2.5.jar

當完成頁面表單和文件上傳解析器的配置後,在Controller中編寫文件上傳的方法即可實現文件上傳。文件上傳的方法代碼如下:

技術分享圖片
@Controller
    public class FileUploadController {
        @RequestMapping("fileUpload")
        public String handleFormUpload(@RequestParam("name") String name,@RequestParam("filename") MultipartFile file,...) {
            if(!file.isEmpty()) {
                //具體的執行方法
                ...
                return "uploadSuccess";//跳轉到成功頁面
            }
            return "uploadFailure";//跳轉到失敗頁面
        }
    }
技術分享圖片

在上述代碼中,包含一個MultipartFile接口類型的參數file,上傳到程序中的文件就是被封裝在該參數中的。org.springframework.web.multipart.MultipartFile接口中提供了獲取上傳文件、文件名稱等方法,這些方法及說明如下表01所示:

文章測試3