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

📄 fileuploadbean.java

📁 一个全面的JSP+Oracle的小型管理系统
💻 JAVA
字号:
package cr.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletInputStream;
import java.util.Dictionary;
import java.util.Hashtable;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.*; 

public class FileUploadBean 
{
	private String savePath, filepath, filename, contentType;
	private byte[] b; 
	byte t; 
	private Dictionary fields;//定义Dictionary对象
 

	public String getFilename() 
	{
		return filename;
	} 

	public String getFilepath() 
	{
		return filepath;
	} 

	public void setSavePath(String savePath) 
	{
		this.savePath = savePath;
	} 

	public String getContentType() 
	{
		return contentType;
	} 

	public String getFieldValue(String fieldName) 
	{
		if (fields == null || fieldName == null)
			return null;
		return (String)fields.get(fieldName);
	} 

	private void setFilename(String s) 
	{
		if (s==null)
			return;
		int pos = s.indexOf("filename=\"");
		if (pos != -1) 
		{
			filepath = s.substring(pos+10, s.length()-1);
//http://www.
// Windows浏览器发送完整的文件路径和名字
// 但Linux/Unix和Mac浏览器只发送文件名字
			pos = filepath.lastIndexOf("\\");//从路径名后面数起
			if (pos != -1)
				filename = filepath.substring(pos + 1);
			else
			filename = filepath;
		}
	}

	private void setContentType(String s) 
	{
		if (s==null)
			return;
		int pos = s.indexOf(":");
		if (pos != -1)
			contentType = s.substring(pos+2, s.length());
	} 

	public void getByte(HttpServletRequest request) 
	{ 
		DataInputStream is; 
		int i=0; 
		try 
		{ 
			is=new DataInputStream(request.getInputStream()); 
			b=new byte[request.getContentLength()]; 
			while (true) 
			{ 
				try 
				{ 
					t=is.readByte(); 
					b[i]=t; 
					i++; 
				} 
				catch(EOFException e)
					{ break;} 
			}
			is.close();
		} 
		catch(IOException e)
		{}
	}  

	public void doUpload1(HttpServletRequest request) throws IOException 
	{ 
		byte[] line=new byte[128];
		FileOutputStream os=new FileOutputStream("c:\\Demo.out");
		ServletInputStream in = request.getInputStream(); 
		getByte(request);
		String temp=""; 
		temp=new String(b,"ISO8859_1"); 
		byte[] img=temp.getBytes("ISO8859_1"); 
		for (int i=0;i<img.length;i++) 
		{os.write(img[i]);} 
		os.close();
	}  

	public void doUpload(HttpServletRequest request) throws IOException 
	{
		request.setCharacterEncoding("GB2312");
		ServletInputStream in = request.getInputStream();
		byte[] line = new byte[1280];
		int i = in.readLine(line, 0, 1280);
		if (i < 3)
			return;
		int boundaryLength = i - 2;
		String boundary = new String(line, 0, boundaryLength); //-2丢弃换行字符
		fields = new Hashtable();
		while (i != -1) 
		{
			String newLine = new String(line, 0, i);
	  	if (newLine.startsWith("Content-Disposition: form-data; name=\"")) 
	 	 	{
				if (newLine.indexOf("filename=\"") != -1) 
				{
					setFilename(new String(line, 0, i-2));
					if (filename==null)
						return;
//文件内容
					i = in.readLine(line, 0, 1280);
					setContentType(new String(line, 0, i-2));
					i = in.readLine(line, 0, 1280);
//空行
					i = in.readLine(line, 0, 1280);
					newLine = new String(line, 0, i,"ISO8859_1");
					FileOutputStream pw=new FileOutputStream((savePath==null? "" : savePath) + filename);
					while (i != -1 && !newLine.startsWith(boundary)) 
					{
// 文件内容的最后一行包含换行字符
// 因此我们必须检查当前行是否是最后一行
						i = in.readLine(line, 0, 1280);
						if ((i==boundaryLength+2 || i==boundaryLength+4) && (new String(line, 0, i).startsWith(boundary)))
							pw.write(newLine.substring(0, newLine.length()-2).getBytes("ISO8859_1"));
						else
							pw.write(newLine.getBytes("ISO8859_1"));
						newLine = new String(line, 0, i,"ISO8859_1"); 
					}
					pw.close();
				}
				else 
				{
// 普通表单输入元素
// 获取输入元素名字
					int pos = newLine.indexOf("name=\"");
					String fieldName = newLine.substring(pos+6, newLine.length()-3);
					i = in.readLine(line, 0, 1280);
					i = in.readLine(line, 0, 1280);
					newLine = new String(line, 0, i);
					StringBuffer fieldValue = new StringBuffer(1280);
					while (i != -1 && !newLine.startsWith(boundary)) 
					{
// 最后一行包含换行字符
// 因此我们必须检查当前行是否是最后一行
						i = in.readLine(line, 0, 1280);
						if ((i==boundaryLength+2 || i==boundaryLength+4) && (new String(line, 0, i).startsWith(boundary)))
							fieldValue.append(newLine.substring(0, newLine.length()-2));
						else
							fieldValue.append(newLine);
						newLine = new String(line, 0, i);
					}
					fields.put(fieldName, fieldValue.toString());
				}
			}
			i = in.readLine(line, 0, 1280);
		}
	}
}

⌨️ 快捷键说明

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