package com.ketayao.fensy.mvc;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
* Multipart Encapsulation
*
* @author <a href="mailto:ketayao@gmail.com">ketayao</a>
* @since 2013年7月26日 下午4:20:30
*/
@SuppressWarnings("unchecked")
public class MultipartRequest extends HttpServletRequestWrapper {
private com.oreilly.servlet.MultipartRequest multipartRequest;
public MultipartRequest(HttpServletRequest req, String upload_tmp_path,
int MAX_FILE_SIZE, String enc) throws IOException {
super(req);
this.multipartRequest = new com.oreilly.servlet.MultipartRequest(req,
upload_tmp_path, MAX_FILE_SIZE, enc);
}
public String getContentType(String name) {
return multipartRequest.getContentType(name);
}
public File getFile(String name) {
return multipartRequest.getFile(name);
}
public Enumeration<String> getFileNames() {
return multipartRequest.getFileNames();
}
public String getFilesystemName(String name) {
return multipartRequest.getFilesystemName(name);
}
public String getOriginalFileName(String name) {
return multipartRequest.getOriginalFileName(name);
}
@Override
public String getParameter(String name) {
String v = super.getParameter(name);
if (v == null)
v = multipartRequest.getParameter(name);
return v;
}
@Override
public Enumeration<String> getParameterNames() {
return multipartRequest.getParameterNames();
}
@Override
public String[] getParameterValues(String name) {
String[] v = super.getParameterValues(name);
if (v == null)
v = multipartRequest.getParameterValues(name);
return v;
}
@Override
public Map<String, Object> getParameterMap() {
Map<String, Object> map = new HashMap<String, Object>();
Enumeration<String> names = getParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
String[] values = getParameterValues(name);
map.put(name, (values != null && values.length == 1) ? values[0]
: values);
}
return map;
}
}