FileUpload 組件使用注意:
1>
首先創建一個HTML頁面。注意,凡是要上載文件的表單都必須設置enctype屬性,且屬性的值必須是multipart/form-data,同時請求方法必須是POST.
<form name="myform" action="fileuploaddemo.jsp" method="post" enctype="multipart/form-data">
2>commons-fileupload-1.1.jar和commons-io-1.1.jar 兩個包都要引入,
因為在parseRequest(request)的類有關繼承于DiskFileItem類。
3>示例
//檢查表單是否正確
boolean isMultipart = FileUpload.isMultipartContent(request);
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//文件最大,設為-1表示不受限制
upload.setSizeMax(4096);
//解析請求,把解析的結果放在一個List里面
List items = upload.parseRequest(request);
//緩存大小,設為-1表示不受限制
factory.setSizeThreshold(4096);
//設置臨時目錄
factory.setRepository(new File("D:\\temp"));
Iterator iter = items.iterator();
while( iter.hasNext() ){
FileItem item = (FileItem)iter.next();
//檢查是一個普通的表單域還是File組件
if( !item.isFormField() ){
System.out.println("FileName:==>"+item.getName());
System.out.println("FieldName:==>"+item.getFieldName());
System.out.println("Size:==>"+item.getSize());
//item.getName 返回的是完整的文件名,如:E:\\xx\11.doc
//所以這里用一個fullFile來取文件名
File fullFile = new File(item.getName());
File uploadedFile = new File("D:\\ftp\\",fullFile.getName());
item.write(uploadedFile);
}
}