commons-FileUpload上傳過程
1、
ServletFileUpload.isMultipartContent(request)
檢測(cè)request中是否包含有multipart內(nèi)容
2、如果有,生成DiskFileItemFactory工廠將進(jìn)行相關(guān)的設(shè)置
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File("d:/"));
3、生成上傳ServletFileUpload類,并將DiskFileFactory工廠傳給它,并對(duì)ServletFileUpload進(jìn)行配置
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax(maxFileSize);
4、從request得到上傳的文件列表
// Parse the request to get file items.
List fileItems = upload.parseRequest(request);// Process the uploaded file items
Iterator i = fileItems.iterator();
5、處理文件:寫入或者其他操作
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
if (!fi.isFormField()) {
// Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
// Write the file
if (fileName.lastIndexOf("\\") >= 0) {
file = new File(
filePath
+ fileName.substring(fileName
.lastIndexOf("\\")));
} else {
file = new File(
filePath
+ fileName.substring(fileName
.lastIndexOf("\\") + 1));
}
fi.write(file);
out.println("Uploaded Filename: " + fileName + "<br>");
}
}}
說明:
FileItem接口是對(duì)用戶上傳文件的封裝
DiskFileItemFactory實(shí)現(xiàn)了FileItemFactory接口,主要方法有public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)
ServletFileUpload從FileUpload繼承,而FileUpload又從FileUploadBase繼承,功能:分析傳入的request對(duì)象、得到文件列表FileItemIterator……
posted on 2011-03-23 13:01 jack zhai 閱讀(1554) 評(píng)論(0) 編輯 收藏 所屬分類: 輕量級(jí)框架學(xué)習(xí) 、java web