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

📄 jakartamultipartrequest.java

📁 struts 2 核心包 的源码 有错误是难免的
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   JakartaMultiPartRequest.java

package org.apache.struts2.dispatcher.multipart;

import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

// Referenced classes of package org.apache.struts2.dispatcher.multipart:
//			MultiPartRequest

public class JakartaMultiPartRequest
	implements MultiPartRequest
{

	static final Log log = LogFactory.getLog(org/apache/struts2/dispatcher/multipart/MultiPartRequest);
	private Map files;
	private Map params;
	private List errors;
	private long maxSize;

	public JakartaMultiPartRequest()
	{
		files = new HashMap();
		params = new HashMap();
		errors = new ArrayList();
	}

	public void setMaxSize(String maxSize)
	{
		this.maxSize = Long.parseLong(maxSize);
	}

	public void parse(HttpServletRequest servletRequest, String saveDir)
		throws IOException
	{
		DiskFileItemFactory fac = new DiskFileItemFactory();
		fac.setSizeThreshold(0);
		if (saveDir != null)
			fac.setRepository(new File(saveDir));
		try
		{
			ServletFileUpload upload = new ServletFileUpload(fac);
			upload.setSizeMax(maxSize);
			List items = upload.parseRequest(createRequestContext(servletRequest));
			for (Iterator i$ = items.iterator(); i$.hasNext();)
			{
				Object item1 = i$.next();
				FileItem item = (FileItem)item1;
				if (log.isDebugEnabled())
					log.debug((new StringBuilder()).append("Found item ").append(item.getFieldName()).toString());
				if (item.isFormField())
				{
					log.debug("Item is a normal form field");
					List values;
					if (params.get(item.getFieldName()) != null)
						values = (List)params.get(item.getFieldName());
					else
						values = new ArrayList();
					String charset = servletRequest.getCharacterEncoding();
					if (charset != null)
						values.add(item.getString(charset));
					else
						values.add(item.getString());
					params.put(item.getFieldName(), values);
				} else
				{
					log.debug("Item is a file upload");
					if (item.getName() == null || item.getName().trim().length() < 1)
					{
						log.debug((new StringBuilder()).append("No file has been uploaded for the field: ").append(item.getFieldName()).toString());
					} else
					{
						List values;
						if (files.get(item.getFieldName()) != null)
							values = (List)files.get(item.getFieldName());
						else
							values = new ArrayList();
						values.add(item);
						files.put(item.getFieldName(), values);
					}
				}
			}

		}
		catch (FileUploadException e)
		{
			log.error(e);
			errors.add(e.getMessage());
		}
	}

	public Enumeration getFileParameterNames()
	{
		return Collections.enumeration(files.keySet());
	}

	public String[] getContentType(String fieldName)
	{
		List items = (List)files.get(fieldName);
		if (items == null)
			return null;
		List contentTypes = new ArrayList(items.size());
		for (int i = 0; i < items.size(); i++)
		{
			FileItem fileItem = (FileItem)items.get(i);
			contentTypes.add(fileItem.getContentType());
		}

		return (String[])(String[])contentTypes.toArray(new String[contentTypes.size()]);
	}

	public File[] getFile(String fieldName)
	{
		List items = (List)files.get(fieldName);
		if (items == null)
			return null;
		List fileList = new ArrayList(items.size());
		for (int i = 0; i < items.size(); i++)
		{
			DiskFileItem fileItem = (DiskFileItem)items.get(i);
			fileList.add(fileItem.getStoreLocation());
		}

		return (File[])(File[])fileList.toArray(new File[fileList.size()]);
	}

	public String[] getFileNames(String fieldName)
	{
		List items = (List)files.get(fieldName);
		if (items == null)
			return null;
		List fileNames = new ArrayList(items.size());
		for (int i = 0; i < items.size(); i++)
		{
			DiskFileItem fileItem = (DiskFileItem)items.get(i);
			fileNames.add(getCanonicalName(fileItem.getName()));
		}

		return (String[])(String[])fileNames.toArray(new String[fileNames.size()]);
	}

	public String[] getFilesystemName(String fieldName)
	{
		List items = (List)files.get(fieldName);
		if (items == null)
			return null;
		List fileNames = new ArrayList(items.size());
		for (int i = 0; i < items.size(); i++)
		{
			DiskFileItem fileItem = (DiskFileItem)items.get(i);
			fileNames.add(fileItem.getStoreLocation().getName());
		}

		return (String[])(String[])fileNames.toArray(new String[fileNames.size()]);
	}

	public String getParameter(String name)
	{
		List v = (List)params.get(name);
		if (v != null && v.size() > 0)
			return (String)v.get(0);
		else
			return null;
	}

	public Enumeration getParameterNames()
	{
		return Collections.enumeration(params.keySet());
	}

	public String[] getParameterValues(String name)
	{
		List v = (List)params.get(name);
		if (v != null && v.size() > 0)
			return (String[])(String[])v.toArray(new String[v.size()]);
		else
			return null;
	}

	public List getErrors()
	{
		return errors;
	}

	private String getCanonicalName(String filename)
	{
		int forwardSlash = filename.lastIndexOf("/");
		int backwardSlash = filename.lastIndexOf("\\");
		if (forwardSlash != -1 && forwardSlash > backwardSlash)
			filename = filename.substring(forwardSlash + 1, filename.length());
		else
		if (backwardSlash != -1 && backwardSlash >= forwardSlash)
			filename = filename.substring(backwardSlash + 1, filename.length());
		return filename;
	}

	private RequestContext createRequestContext(final HttpServletRequest req)
	{
		return new RequestContext() {

			final HttpServletRequest val$req;
			final JakartaMultiPartRequest this$0;

			public String getCharacterEncoding()
			{
				return req.getCharacterEncoding();
			}

			public String getContentType()
			{
				return req.getContentType();
			}

			public int getContentLength()
			{
				return req.getContentLength();
			}

			public InputStream getInputStream()
				throws IOException
			{
				return req.getInputStream();
			}

			
				throws IOException
			{
				this$0 = JakartaMultiPartRequest.this;
				req = httpservletrequest;
				super();
			}
		};
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -