📄 abstractmultipartdecoder.java
字号:
package com.onetsoft.fastjsp.request.multipart;
import com.onetsoft.fastjsp.ApplicationRuntimeException;
import com.onetsoft.fastjsp.request.UploadFile;
import org.apache.commons.fileupload.FileItem;
import java.io.UnsupportedEncodingException;
import java.text.MessageFormat;
import java.util.*;
abstract class AbstractMultipartDecoder implements MultipartDecoder {
protected Map _uploadParts = new HashMap(8);
private Map _valueParts = new HashMap(8);
protected String _encoding;
public UploadFile getFileUpload(String parameterName) {
return (UploadFile) _uploadParts.get(parameterName);
}
public UploadFile[] getFileUploads() {
Collection col = _uploadParts.values();
return (UploadFile[]) col.toArray(new UploadFile[col.size()]);
}
public void cleanup() {
for (Iterator iter = _uploadParts.values().iterator(); iter.hasNext();) {
((UploadPart) iter.next()).cleanup();
}
}
/*解析参数,直接以PageParams 的参数map*/
protected Map buildParameterMap(Map m) {
Map.Entry e;
String name;
ValuePart part;
for (Iterator iter = _valueParts.entrySet().iterator(); iter.hasNext();) {
e = (Map.Entry) iter.next();
name = (String) e.getKey();
part = (ValuePart) e.getValue();
//以满足page data处理方式解析参数,即更加值多少确定是否采用数组方式存储
if (part.getCount() == 1)
m.put(name, part.getValue());
else
m.put(name, part.getValues());
}
return m;
}
protected void processFileItems(List parts) {
if (parts == null)
return;
for (Iterator iter = parts.iterator(); iter.hasNext();) {
processFileItem((FileItem) iter.next());
}
}
private void processFileItem(FileItem item) {
if (item.isFormField())
processFormFieldItem(item);
else
processUploadFileItem(item);
}
private void processUploadFileItem(FileItem item) {
String name = item.getFieldName();
UploadPart part = new UploadPart(item);
_uploadParts.put(name, part);
}
void processFormFieldItem(FileItem item) {
String name = item.getFieldName();
String value = extractFileItemValue(item);
ValuePart part = (ValuePart) _valueParts.get(name);
if (part == null)
_valueParts.put(name, new ValuePart(value));
else
part.add(value);
}
private String extractFileItemValue(FileItem item) {
try {
return (_encoding == null) ? item.getString() : item
.getString(_encoding);
} catch (UnsupportedEncodingException ex) {
throw new ApplicationRuntimeException(MessageFormat.format("Unsupported character encoding \"{0}\" " +
"when decoding multipart encoded request!", new Object[]{_encoding}));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -