📄 multipartrequestwrapper.java
字号:
/*
* WebWork, Web Application Framework
*
* Distributable under Apache license.
* See terms of license at opensource.org
*/
package webwork.multipart;
import webwork.config.Configuration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
import org.apache.commons.logging.LogFactory;
/**
* <code>MultiPartRequestWrapper</code> will parse a multipart request and
* provide a wrapper around the request. The parse it uses depends on
* the "webwork.multipart.parser" setting. The present choices are
* "pell" for Jason Pell and "cos" for Jason Hunter.
*
* @author Matt Baldree
* $Date: 2003/11/01 18:29:35 $
* @version $Revision: 1.8 $
*/
public class MultiPartRequestWrapper extends HttpServletRequestWrapper
{
MultiPartRequest multi;
public MultiPartRequestWrapper(HttpServletRequest request, String saveDir, Integer maxSize)
throws IOException
{
super(request);
if (request instanceof MultiPartRequest) {
multi = (MultiPartRequest)request;
} else {
String parser = Configuration.getString("webwork.multipart.parser");
if ("cos".equals(parser)) {
multi = new CosMultiPartRequest(request, saveDir, maxSize.intValue());
} else
if ("pell".equals(parser)) {
multi = new PellMultiPartRequest(request, saveDir, maxSize.intValue());
} else {
throw new IOException("Not multipart parse specified in webwork.properties.");
}
}
}
public Enumeration getParameterNames()
{
return mergeParams(super.getParameterNames(), multi.getParameterNames());
}
public String getParameter(String name)
{
// Look in the original request first
String superValue = super.getParameter(name);
return (superValue != null ? superValue : multi.getParameter(name));
}
public String[] getParameterValues(String name)
{
// Look in the original request first
String[] superValue = super.getParameterValues(name);
return (superValue != null ? superValue : multi.getParameterValues(name));
}
public Map getParameterMap()
{
Map map = new HashMap();
Enumeration enum = getParameterNames();
while (enum.hasMoreElements()) {
String name = (String) enum.nextElement();
map.put(name, this.getParameterValues(name));
}
return map;
}
// Methods only in MultipartRequest
public Enumeration getFileNames()
{
return multi.getFileNames();
}
public String getFilesystemName(String name)
{
return multi.getFilesystemName(name);
}
public String getContentType(String name)
{
return multi.getContentType(name);
}
public File getFile(String name)
{
return multi.getFile(name);
}
//private
protected Enumeration mergeParams(Enumeration params1, Enumeration params2) {
Vector temp = new Vector();
while(params1.hasMoreElements())
temp.add(params1.nextElement());
while(params2.hasMoreElements())
temp.add(params2.nextElement());
return temp.elements();
}
public InputStream getMemoryFileContents(String name) {
// since this is only implemented for the PellMultiPartRequest
// check if we have an instance of it if not log an error
// and return null
if ( multi instanceof PellMultiPartRequest ){
return ((PellMultiPartRequest)multi).getMemoryFileContents(name);
}
else{
LogFactory.getLog(MultiPartRequestWrapper.class).error("File uploading using memory is currently implemented only for the PellMultiPartRequest");
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -