這篇文章主要介紹了Java進階之FileUpload完成上傳的實例的相關資料,希望透過本文能幫助到大家,需要的朋友可以參考下
Java進階之FileUpload完成上傳的實例
FileUpload是Apache commons下面的子項目,用來實作Java項目下的檔案上傳功能,常見的檔案上傳還有SmartUpload,Servlet3.0,Struts2。
在這裡我用的是commons- fileupload-1.2.1,以下就是一個簡單實例,解析過程都寫到程式碼中的註解上了,註解很詳細
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | DiskFileItemFactory diskFileItemFactory= new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(1024*1024*3);
ServletFileUpload fileUpload= new ServletFileUpload(diskFileItemFactory);
fileUpload.setHeaderEncoding( "UTF-8" );
List<FileItem> list = fileUpload.parseRequest(request);
Map<String, String> map= new HashMap<>();
String fileName=null;
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
String name=fileItem.getFieldName();
String value=fileItem.getString( "UTF-8" );
map.put(name, value);
} else {
fileName=fileItem.getName();
InputStream is=fileItem.getInputStream();
String path=this.getServletContext().getRealPath( "/products/1" );
OutputStream os= new FileOutputStream(path+ "/" +fileName);
int len=0;
byte[] b= new byte[1024];
while ((len=is.read(b))!=-1) {
os.write(b, 0, len);
}
is.close();
os.close();
}
|
登入後複製
元件FileUpload使用FileItemFactory工廠建立新的檔案項目。這個給了元件FileUpload很大的彈性。這個工廠擁有怎樣創建專案的最終控制權。工廠執行過程中上傳項目檔案的臨時資料可以儲存在記憶體或硬碟上。這個依賴於上傳項目的大小(即:資料的位元組)。不過這種行為可以在你的應用程式中適當的自訂。
以上是Java中使用FileUpload完成上傳的程式碼案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!