支持文件上傳是web程序最基本和常見的需求。在早期的servlet規範中,實現文件上傳須要使用第三方庫或者複雜的輸入處理。針對此問題,servlet如今以通用和可移植的方式幫助提供了一個可行的解決方案。servlet技術如今提供開箱即用的上傳文件方法,因此任何實現規範的web容器都能經過HttpServletRequest 對象解析multipart請求和生成有效的mime附件。
一個新的註解,javax.servlet.annotation.MultipartConfig,用來代表須要multipart/form-data類型請求的定義上。使用@MultipartConfig註解的servlet均可以經過調用 request.getPart(String name)或request.getParts()方法獲取一個給定的multipart/form-data請求中的Part構件。java
@MultipartConfig註解提供下面這些可選的屬性:web
例如,@MultiPartConfig能夠以下構造:編碼
@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024, maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
代替使用 @MultipartConfig註解在你的upload servlet中硬編碼這些屬性,須要在web.xml中做爲一個子節點添加下面的節點:操作系統
<multipart-config> <location>/tmp</location> <max-file-size>20848820</max-file-size> <max-request-size>418018841</max-request-size> <file-size-threshold>1048576</file-size-threshold> </multipart-config>
servlet規範定義了HttpServletRequest的兩個附加方法:code
request.getParts()方法返回全部Prat集合。若是你有超過一個文件類型的輸入,將返回多個Part對象。由於全部Part對象都被命名, getPart(String name)方法用來訪問特定的Part對象。另外,getParts()返回Iterable<Part>能夠用來遍歷全部Part。
javax.servlet.http.Part是簡單的,提供每一個Part的自省方法。方法列表:orm
例如,Part 接口提供write(String filename) 方法以特定名稱寫入到文件中。文件能夠使用@MultipartConfig註解定義的location直接保存,在fileupload示例中,location是由表達中的屬性定義的。xml