package foundation.io.object; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import foundation.dao.DataReader; import foundation.server.config.Configer; import foundation.util.Util; public class UploadReader { private static int MaxFileSize = 1; private List fileItemList; static { MaxFileSize = Configer.getInt("MaxFileSize", 10); MaxFileSize = MaxFileSize * 1024 * 1024; } public UploadReader(HttpServletRequest request) throws Exception { } public UploadReader(DataReader dataReader) throws Exception { //1. fileItemList = new ArrayList(); //2. parse parse(dataReader); } private void parse(DataReader dataReader) throws Exception { HttpServletRequest request = dataReader.getRequest(); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(MaxFileSize); ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(MaxFileSize); upload.setSizeMax(MaxFileSize * 5); FileItemAgent fileForm = new FileItemAgent(); fileItemList.add(fileForm); List items = upload.parseRequest(request); Iterator iterator = items.iterator(); while (iterator.hasNext()) { FileItem item = (FileItem) iterator.next(); String fieldName = item.getFieldName(); if (Util.isEmpty(fieldName)) { continue; } //1. load parameters if (item.isFormField()) { String value = item.getString("UTF-8"); dataReader.loadOneParameter(fieldName, value); continue; } //2. load files fileForm.setFileItem(item); } } public FileItemAgent getFistFileItem() { if (fileItemList.isEmpty()) { return null; } return fileItemList.get(0); } public List getFileItemList() { return fileItemList; } }