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

📄 upbean.java

📁 经典的“企业内部管理信息系统”JSP源代码
💻 JAVA
字号:
// Decompiled by DJ v3.7.7.81 Copyright 2004 Atanas Neshkov  Date: 2004-9-28 23:56:53
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   upBean.java

package xiaoxiang.fileUpload;

import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;

// Referenced classes of package xiaoxiang.fileUpload:
//            files, Request, file

public class upBean {

	public upBean() {
		m_files = new files();
		m_totalBytes = 0;
		m_currentIndex = 0;
		m_startData = 0;
		m_endData = 0;
		m_boundary = new String();
		m_totalMaxFileSize = 0L;
		m_maxFileSize = 0L;
		m_allowedExtList = new Vector();
		m_allowedFileTypeList = new Vector();
		m_formRequest = new Request();
		m_count = 0;
		isCover = true;
		realPath = new String();
	}

	public final void initialize(PageContext pagecontext)
		throws ServletException {
		m_application = pagecontext.getServletContext();
		m_request = (HttpServletRequest) pagecontext.getRequest();
		m_response = (HttpServletResponse) pagecontext.getResponse();
	}

	/**
	 * @deprecated Method setRealPath is deprecated
	 */

	public void setRealPath(String pRealPath) {
		realPath = pRealPath;
	}

	public String getRealPath() {
		return realPath;
	}

	public void setIsCover(boolean pIsCover) {
		isCover = pIsCover;
	}

	public void upload() throws ServletException, IOException, Exception {
		int i = 0;
		long maxSize = 0L;
		boolean isBoundaryEnd = false;
		String sFileName = new String();
		String fileExtName = new String();
		String dataFieldValue = new String();
		String contentType = new String();
		String typeMIME = new String();
		String subTypeMIME = new String();
		m_totalBytes = m_request.getContentLength();
		m_binArray = new byte[m_totalBytes];
		int j;
		for (; i < m_totalBytes; i += j)
			try {
				m_request.getInputStream();
				j =
					m_request.getInputStream().read(
						m_binArray,
						i,
						m_totalBytes - i);
			} catch (Exception exception) {
				throw new Exception("Unable to upload.");
			}

		for (;
			!isBoundaryEnd && m_currentIndex < m_totalBytes;
			m_currentIndex++)
			if (m_binArray[m_currentIndex] == 13)
				isBoundaryEnd = true;
			else
				m_boundary += (char) m_binArray[m_currentIndex];

		if (m_currentIndex == 1)
			return;
		for (m_currentIndex++;
			m_currentIndex < m_totalBytes;
			m_currentIndex += 2) {
			String dataHeader = getDataHeader();
			m_currentIndex += 2;
			boolean isFileObject = dataHeader.indexOf("filename") > 0;
			String fieldName = getDataFieldValue(dataHeader, "name");
			if (isFileObject) {
				dataFieldValue = getDataFieldValue(dataHeader, "filename");
				sFileName = getFileName(dataFieldValue);
				fileExtName = getFileExt(sFileName);
				contentType = getContentType(dataHeader);
				typeMIME = getTypeMIME(contentType);
				subTypeMIME = getSubTypeMIME(contentType);
			}
			getDataSection();
			m_size = (m_endData - m_startData) + 1;
			if (isFileObject && sFileName.length() > 0) {
				if (!m_allowedExtList.isEmpty()
					&& !m_allowedExtList.contains(fileExtName))
					throw new SecurityException(
						"\u60A8\u7684\u6587\u4EF6\u540E\u7F00\u540D\u4E0D\u7B26\u5408\u6211\u4EEC\u7684\u8BBE\u5B9A.\u6211\u4EEC\u53EA\u5141\u8BB8\u4EE5\u4E0B\u540E\u7F00\u540D\u7684\u6587\u4EF6\uFF1A"
							+ m_allowedExtList.toString());
				if (!m_allowedFileTypeList.isEmpty()
					&& !m_allowedFileTypeList.contains(subTypeMIME))
					throw new SecurityException(
						"\u60A8\u7684\u6587\u4EF6\u7C7B\u578B\u4E0D\u7B26\u5408\u6211\u4EEC\u7684\u8BBE\u5B9A.\u6211\u4EEC\u53EA\u5141\u8BB8\u4EE5\u4E0B\u7C7B\u578B\u7684\u6587\u4EF6\uFF1A"
							+ m_allowedFileTypeList.toString());
				if (m_maxFileSize > 0L
					&& (long) ((m_endData - m_startData) + 1) > m_maxFileSize)
					throw new SecurityException(
						"\u60A8\u4E0A\u4F20\u7684\u8FD9\u4E2A\u6587\u4EF6\u8D85\u8FC7\u4E86\u6211\u4EEC\u7684\u9650\u5236 : "
							+ sFileName
							+ ".\u6587\u4EF6\u7684\u5355\u4E2A\u5927\u5C0F\u5E94\u5C0F\u4E8E"
							+ (m_maxFileSize / 1000L + 1L)
							+ "kb");
				maxSize += (m_endData - m_startData) + 1;
				if (m_totalMaxFileSize > 0L && maxSize > m_totalMaxFileSize)
					throw new SecurityException(
						"\u60A8\u4E0A\u4F20\u7684\u6587\u4EF6\u603B\u5927\u5C0F\u8D85\u8FC7\u4E86\u6211\u4EEC\u7684\u9650\u5236:"
							+ (m_totalMaxFileSize / 1000L + 1L)
							+ "kb");
				m_files.addFile(
					new file(
						sFileName,
						m_startData,
						(m_endData - m_startData) + 1,
						m_count,
						subTypeMIME,
						this));
				m_count++;
			}
			if (!isFileObject) {
				String s11 =
					new String(
						m_binArray,
						m_startData,
						(m_endData - m_startData) + 1);
				m_formRequest.putParameter(fieldName, s11);
			}
			if ((char) m_binArray[m_currentIndex + 1] == '-')
				break;
		}

	}

	private String getDataFieldValue(String s, String s1) {
		String s2 = new String();
		String s3 = new String();
		int i = 0;
		boolean flag = false;
		boolean flag1 = false;
		boolean flag2 = false;
		s2 = s1 + "=" + '"';
		i = s.indexOf(s2);
		if (i > 0) {
			int j = i + s2.length();
			int k = j;
			s2 = "\"";
			int l = s.indexOf(s2, j);
			if (k > 0 && l > 0)
				s3 = s.substring(k, l);
		}
		return s3;
	}

	private String getFileExt(String s) {
		String s1 = new String();
		int i = 0;
		int j = 0;
		if (s == null)
			return null;
		i = s.lastIndexOf('.') + 1;
		j = s.length();
		s1 = s.substring(i, j);
		if (s.lastIndexOf('.') > 0)
			return s1;
		else
			return "";
	}

	private String getContentType(String s) {
		String s1 = new String();
		String s2 = new String();
		int i = 0;
		boolean flag = false;
		s1 = "Content-Type:";
		i = s.indexOf(s1) + s1.length();
		if (i != -1) {
			int j = s.length();
			s2 = s.substring(i, j);
		}
		return s2;
	}

	private String getTypeMIME(String s) {
		String s1 = new String();
		int i = 0;
		i = s.indexOf("/");
		if (i != -1)
			return s.substring(1, i);
		else
			return s;
	}

	private String getSubTypeMIME(String s) {
		String s1 = new String();
		int i = 0;
		boolean flag = false;
		i = s.indexOf("/") + 1;
		if (i != -1) {
			int j = s.length();
			return s.substring(i, j);
		} else {
			return s;
		}
	}

	private void getDataSection() {
		boolean flag = false;
		String s = new String();
		int i = m_currentIndex;
		int j = 0;
		int k = m_boundary.length();
		m_startData = m_currentIndex;
		m_endData = 0;
		while (i < m_totalBytes)
			if (m_binArray[i] == (byte) m_boundary.charAt(j)) {
				if (j == k - 1) {
					m_endData = ((i - k) + 1) - 3;
					break;
				}
				i++;
				j++;
			} else {
				i++;
				j = 0;
			}
		m_currentIndex = m_endData + k + 3;
	}

	private String getDataHeader() {
		int i = m_currentIndex;
		int j = 0;
		boolean flag = false;
		for (boolean flag1 = false; !flag1;)
			if (m_binArray[m_currentIndex] == 13
				&& m_binArray[m_currentIndex + 2] == 13) {
				flag1 = true;
				j = m_currentIndex - 1;
				m_currentIndex += 2;
			} else {
				m_currentIndex++;
			}

		String s = new String(m_binArray, i, (j - i) + 1);
		return s;
	}

	private String getFileName(String s) {
		String s1 = new String();
		String s2 = new String();
		int i = 0;
		boolean flag = false;
		boolean flag1 = false;
		boolean flag2 = false;
		i = s.lastIndexOf('/');
		if (i != -1)
			return s.substring(i + 1, s.length());
		i = s.lastIndexOf('\\');
		if (i != -1)
			return s.substring(i + 1, s.length());
		else
			return s;
	}

	public void setAllowedExtList(String s) {
		String s1 = "";
		if (s != null) {
			String s2 = "";
			for (int i = 0; i < s.length(); i++)
				if (s.charAt(i) == ',') {
					if (!m_allowedExtList.contains(s2))
						m_allowedExtList.addElement(s2);
					s2 = "";
				} else {
					s2 = s2 + s.charAt(i);
				}

			if (s2 != "")
				m_allowedExtList.addElement(s2);
		} else {
			m_allowedExtList = null;
		}
	}

	public void setAllowedFileTypeList(String s) {
		String s1 = "";
		if (s != null) {
			String s2 = "";
			for (int i = 0; i < s.length(); i++)
				if (s.charAt(i) == ',') {
					if (!m_allowedFileTypeList.contains(s2))
						m_allowedFileTypeList.addElement(s2);
					s2 = "";
				} else {
					s2 = s2 + s.charAt(i);
				}

			if (s2 != "")
				m_allowedFileTypeList.addElement(s2);
		} else {
			m_allowedFileTypeList = null;
		}
	}

	public void setTotalMaxFileSize(long l) {
		m_totalMaxFileSize = l;
	}

	public void setMaxFileSize(long l) {
		m_maxFileSize = l;
	}

	public Request getRequest() {
		return m_formRequest;
	}

	public files getFiles() {
		return m_files;
	}

	protected byte m_binArray[];
	protected String realPath;
	protected HttpServletRequest m_request;
	protected HttpServletResponse m_response;
	protected ServletContext m_application;
	private int m_totalBytes;
	private int m_currentIndex;
	private int m_startData;
	private int m_size;
	private int m_endData;
	private String m_boundary;
	private long m_totalMaxFileSize;
	private long m_maxFileSize;
	private Vector m_allowedExtList;
	private Vector m_allowedFileTypeList;
	private Request m_formRequest;
	private int m_count;
	private files m_files;
	protected boolean isCover;
}

⌨️ 快捷键说明

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