文章測試3
文件的上傳和下載是項目開發中最常用的功能,例如圖片的上傳和下載、郵件附件的上傳和下載等。
接下來,將對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