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

📄 fileuploadbean.java

📁 电子商务网站使用MVC模式B/S结构功能不是很全适合初学者看
💻 JAVA
字号:
package Common; 
import java.io.*; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.ServletInputStream; 
import javax.servlet.ServletException; 
import com.oreilly.servlet.multipart.*;
import javazoom.upload.*;
import javazoom.upload.MultipartFormDataRequest;
public class FileUploadBean{ 
	private static String newline = "\r\n"; // 设定换行符
	private String uploadDirectory = "."; // 默认的保存位置
	private String ContentType = ""; // 文件类型
	private String CharacterEncoding = ""; // 编码格式
	private String fileName="";
	
// 设定文件要保存在服务器中的位置
	public void setUploadDirectory(String s){ 
		uploadDirectory = s; 
		System.out.println("11setDirectory");
	} 
// 提取文件名,本方法是把用户上传的文件按照原名保存
	private String getFileName(String s){ 
		int i = s.lastIndexOf("\\"); 
		if(i < 0 || i >= s.length() - 1){ 
			i = s.lastIndexOf("/"); 
			if(i < 0 || i >= s.length() - 1) 
				return s; 
		} 
		return s.substring(i + 1);
	//	return this.fileName;
	} 
	private String setFileName(String s){
		this.fileName=s;
		return s;
	}
// 得到content-type
	public void setContentType(String s){ 
		ContentType = s; 
		int j; 
		if((j = ContentType.indexOf("boundary=")) != -1){ 
			ContentType = ContentType.substring(j + 9); 
			ContentType = "--" + ContentType; 
		} 
	} 
// 得到文件编码格式
	public void setCharacterEncoding(String s){ 
		CharacterEncoding = s; 
	} 

	public void uploadFile( HttpServletRequest req) throws ServletException, IOException{ 
		System.out.println("kao ni ninini");
		setCharacterEncoding(req.getCharacterEncoding()); 
		setContentType(req.getContentType()); 
		uploadFile(req.getInputStream()); 
	} 

	public void uploadFile( ServletInputStream servletinputstream) throws ServletException, IOException{ 

		String s5 = null; 
		String filename = null; 
		byte Linebyte[] = new byte[4096]; 
		byte outLinebyte[] = new byte[4096]; 
		int ai[] = new int[1]; 
		int ai1[] = new int[1]; 
		String line; 

// 得到文件名
		while((line = readLine(Linebyte, ai, servletinputstream, CharacterEncoding)) != null){ 
			int i = line.indexOf("filename="); 
			if(i >= 0){ 
				line = line.substring(i + 10); 
				if((i = line.indexOf("\"")) > 0) 
					line = line.substring(0, i); 
				break; 
			} 
		} 
		filename = line; 
		System.out.println("this is the filename:"+filename);
		filename=getFileName(filename);
		if(filename != null && !filename.equals("\"")){ 
			//filename = getFileName(filename); 
			filename=this.getFileName(filename);
			
			String sContentType = readLine(Linebyte, ai, servletinputstream, CharacterEncoding); 
			if(sContentType.indexOf("Content-Type") >= 0) 
				readLine(Linebyte, ai, servletinputstream, CharacterEncoding); 
			
			// 建立新文件夹的文件句柄

			String path=uploadDirectory;
			path=path + "\\Sub";//将要建立的目录路径 
			File d=new File(path);//建立代表Sub目录的File对象,并得到它的一个引用 
			if(d.exists()){//检查Sub目录是否存在 
				System.out.println("Sub目录存在"); 
			}else{ 
				d.mkdir();//建立Sub目录 
				System.out.println("Sub目录不存在,已建立"); 
			} 


			// 建立新文件的文件句柄
			System.out.println(filename+" isisisisi");
			File file = new File(d,filename );
			file.createNewFile();
// 建立生成新文件的输出流
			FileOutputStream fileoutputstream = new FileOutputStream(file); 
			System.out.println("!!!!!!!!!!!!!!");
			while((sContentType = readLine(Linebyte, ai, servletinputstream, CharacterEncoding)) != null){ 
				if(sContentType.indexOf(ContentType) == 0 && Linebyte[0] == 45) 
					break; 

				if(s5 != null){ 
// 写入新文件
					fileoutputstream.write(outLinebyte, 0, ai1[0]); 
					fileoutputstream.flush(); 
				} 
				s5 = readLine(outLinebyte, ai1, servletinputstream, CharacterEncoding); 
				if(s5 == null || s5.indexOf(ContentType) == 0 && outLinebyte[0] == 45) 
					break; 
				fileoutputstream.write(Linebyte, 0, ai[0]); 
				fileoutputstream.flush(); 
			} 

			byte byte0; 
			if(newline.length() == 1) 
				byte0 = 2; 
			else 
				byte0 = 1; 
			if(s5 != null && outLinebyte[0] != 45 && ai1[0] > newline.length() * byte0) 
				fileoutputstream.write(outLinebyte, 0, ai1[0] - newline.length() * byte0); 
			if(sContentType != null && Linebyte[0] != 45 && ai[0] > newline.length() * byte0) 
				fileoutputstream.write(Linebyte, 0, ai[0] - newline.length() * byte0); 
			fileoutputstream.close();
		} 
	} 

// readLine函数把表单提交上来的数据按行读取
	private String readLine(byte Linebyte[], int ai[],ServletInputStream servletinputstream,String CharacterEncoding){ 
		try{ // 读取一行
			ai[0] = servletinputstream.readLine(Linebyte, 0, Linebyte.length); 
			if(ai[0] == -1) 
				return null; 
		}catch(IOException ex){ 
			return null; 
		} 
		try{ 
			if(CharacterEncoding == null){ 
// 用默认的编码方式把给定的byte数组转换为字符串
				return new String(Linebyte, 0, ai[0]); 
			}else{ 
// 用给定的编码方式把给定的byte数组转换为字符串
				return new String(Linebyte, 0, ai[0], CharacterEncoding); 
			} 
		}catch(Exception ex){ 
			return null; 
		} 
	} 

    public void getParameter(HttpServletRequest request){
    	MultipartFormDataRequest mrequest = null; 
		try{
			if (MultipartFormDataRequest.isMultipartFormData(request)){ 
				mrequest = new MultipartFormDataRequest(request,null,100*1024*1024,MultipartFormDataRequest.COSPARSER,"GBK");//注意这里也要设置编码参数 
				String card = mrequest.getParameter("card"); 
				System.out.println("<br>Title0是:"+card+"<br>"); 
				String sTt1 = new String(card.getBytes("ISO-8859-1"),"GBK"); 
				System.out.println("<br>Title1是:"+sTt1+"<br>"); 
				//这里用来测试title参数是否正确。调试的时候,加一句if (true)return;即可。 
			}	
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		
    }
    
} 

⌨️ 快捷键说明

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