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<FileItemAgent> 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<FileItemAgent>();
|
|
//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<FileItem> items = upload.parseRequest(request);
|
Iterator<FileItem> 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<FileItemAgent> getFileItemList() {
|
return fileItemList;
|
}
|
}
|