⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multipartrequestwrapper.java

📁 webwork source
💻 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 + -