`
lauphai
  • 浏览: 23958 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一个上传包的类

阅读更多
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

import javax.servlet.http.HttpServletRequest;

public class G_UPLOAD {

	public static String a_path = "";
	public static ArrayList<String> a_tmtList = new ArrayList<String>();
	//public static HashSet<String> hs_id = new HashSet<String>();
	public static HashMap<String,String> hm_id = new HashMap<String,String>();
	public static BufferedReader bufferedreader = null;

	public static void main(String[] args) {
//		try {
//			readfile("c:\\aaaaaa\\gimages");
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
	}

	public static String error = "";
	public static String locate = "";
	public static String tmpziploc = "/tmp/gimages.zip";
	public static String tmpunzip = "/tmp/gimages/";
	public static String imagespath = "/data/wwwroot/images/gimages/";

	public static HashSet<String> upload(HttpServletRequest req) {
		boolean result = true;
		HashSet<String> res = new HashSet<String>();
		FileOutputStream fos = null;
		System.out.println("...................Stating..................");
		try {
			Hashtable ht = tools.StrProc.getUpload(req);
			byte[] ppfile = (byte[]) ht.get("file1");
			if (ppfile == null || ppfile.length == 0) {
				//return true;
				System.out.println("..................................... zip file too large..............");
				res.add("true");
				return res;
			}

			File old = new File(tmpziploc);
			old.delete();

			fos = new FileOutputStream(tmpziploc, true);
			fos.write(ppfile);
			fos.flush();

			int length;
			int length1;
			String sDestPath = tmpunzip;
			String sZipPathFile = tmpziploc;
			ZipFile zip;
			byte b[] = new byte[1024];
			byte b1[] = new byte[1024];

			deleteFolder(new File(sDestPath));

			zip = new ZipFile(new File(sZipPathFile));
			Enumeration enumeration = zip.entries();
			ZipEntry zipEntry = null;
			while (enumeration.hasMoreElements()) {
				zipEntry = (ZipEntry) enumeration.nextElement();
				File loadFile = new File(sDestPath + zipEntry.getName());
				if (zipEntry.isDirectory()) {
					loadFile.mkdirs();
				} else {
					if (!loadFile.getParentFile().exists())
						loadFile.getParentFile().mkdirs();

					OutputStream outputStream = new FileOutputStream(loadFile);
					InputStream inputStream = zip.getInputStream(zipEntry);
					// System.out.println(zipEntry.getName());
					System.out.println("------zipEntry.getName():  "
							+ zipEntry.getName());
					while ((length = inputStream.read(b, 0, 1024)) != -1) {
						outputStream.write(b, 0, length);
					}
					outputStream.close();
					inputStream.close();
				}
			}

			zip.close();

			// 读文件
			HashSet al = readfile(tmpunzip);
			System.out.println("--------------------------------------- return's HashSet is: : "+al.size());
			
			res = al;
		} catch (Exception ex) {
			ex.printStackTrace();
			error = ex.getMessage() + "  " + locate;
			System.out.println("..................................... error:"+error);
			//result = false;
			res.add("false");
			return res;
		} finally {
			try {
				fos.close();
			} catch (Exception iex) {

			}
		}
		System.out.println("############################################# result returned: ............................."+result);
		return res;
	}

	
	/**
	 * 读取某个文件夹下的所有文件夹和文件
	 * @throws FileNotFoundException
	 * @throws IOException
	 * @return HashSet
	 */

	public static HashSet readfile(String filepath) throws FileNotFoundException,IOException {
		Connection conn31 = null;
		PreparedStatement stmt_g = null;
		PreparedStatement stmt_g_s = null;
		HashSet<String> hs_id = new HashSet<String>();
		try {
			conn31 = mysql_31();
			String str_n = "";
			String str_e = "";
			String t_path = "";
			String str_hz = "";
			String stemp;
			
			int length1;
			byte b1[] = new byte[1024];

			// String n_path = "";
			File file = new File(filepath);
			if (file.isDirectory()) {
				// System.out.println("嵌套文件夹");
				String[] filelist = file.list();

				for (int i = 0; i < filelist.length; i++) {
					// File readfile = new File(filepath + "\\" + filelist[i]);
					File readfile = new File(filepath + "/" + filelist[i]);
					if (!readfile.isDirectory()) {
						t_path = readfile.getAbsolutePath();
						str_n = (readfile.getName()).substring(0, readfile.getName().length() - 4);
						str_e = (readfile.getName()).substring(0,readfile.getName().length()).toLowerCase();
						str_hz = str_e.substring(str_e.lastIndexOf("."), str_e.length());
						// n_path =  t_path.substring(0,t_path.length()-readfile.getName().length());
						if (i == 0) {
							a_path = t_path.substring(0, t_path.length() - readfile.getName().length());
						}
						// System.out.println(a_path);
						// System.out.println("ID:" + str_n + ", " + str_e+ ", 后缀:" + str_hz + ", 路径: " + t_path);

						String idfile = filepath.replace(tmpunzip, "").replace("/", "");
						System.out.println(idfile);
						if (t_path.contains(".txt") && str_hz.equals(".txt")) {
							
							File f = new File(t_path);
							try {
								java.io.InputStream ios = new java.io.FileInputStream(f);
								byte[] b = new byte[3];
								ios.read(b);
								ios.close();
								if (b[0] == -17 && b[1] == -69 && b[2] == -65) {
									System.out.println(f.getName() + "Code:   UTF-8");
						    	  
						    	// bufferedreader = new BufferedReader(new FileReader(t_path));
									String g_id = "";
									String g_name = "";
									String g_type = "";
									String g_m = "";
									String g_fee = "";
									String g_com = "";
									String g_de = "";
									String g_le = "1";
									int ii = 0;
									FileInputStream fin = new FileInputStream(t_path);
									InputStreamReader fileIn = new InputStreamReader(fin, "UTF-8");
									BufferedReader infm = new BufferedReader(fileIn);

									while ((stemp = infm.readLine()) != null) {
										ii++;
										stemp = stemp.trim().replaceAll("	", "").replaceAll(" ", "").replace(":", ":");
										System.out.println(stemp.substring(stemp.indexOf(":") + 1, stemp.length()));
										stemp = stemp.substring(stemp.indexOf(":") + 1,stemp.length());
										if (ii == 1) {
											g_id = stemp;
											if (!g_id.matches("\\d+") || g_id.length() <= 0) {
												System.out.println("invalid ID....");
												break;
											}
											// System.out.println("编号: "+g_id+", "+g_id.length());
										} 
										
									}
									if (g_id.length() <= 0) {
										System.out.println("...............................failure..data...............................");
										hs_id.add(idfile+".c");//txt文件格式不正确,可能属性值为空
									} else {
										if(idfile.equals(g_id)){
											g_id = idfile;
										}
										String sql_s = "select game_id from game.T_GAME_STORE where game_id=?";
										stmt_g_s = conn31.prepareStatement(sql_s);
										stmt_g_s.setString(1, g_id);
										//stmt_g.executeQuery();
										if(!stmt_g_s.executeQuery().next()){
											System.out.println("...............................inserting...............................");
											String sql_in = "insert into game.T_GAME_STORE(game_id)  values(?)";
											stmt_g = conn31.prepareStatement(sql_in);
											stmt_g.setString(1, g_id);
											stmt_g.execute();

											// System.out.println("/tmp/gimages/"+idfile+" "+"/data/wwwroot/images/gimages/"+idfile);
											//copyDirectiory(tmpunzip + idfile, imagespath + idfile);
										}else{
											// update
											System.out.println("...............................updating...............................: "+g_id);
											String sql_up = "update game.T_GAME_STORE set game_name=?   where game_id=?";
											stmt_g = conn31.prepareStatement(sql_up);
											stmt_g.setString(1, g_id);
											stmt_g.executeUpdate();
										}
										copyDirectiory(tmpunzip + idfile, imagespath + idfile);
										
									}
						    	  
						    	  
						      }else{
						    	  System.out.println(f.getName()+"Code maybe:   ASCII");
						    	  hs_id.add(idfile+".b");//编码不是UTF-8
						      }
						    }catch(Exception e){
						       e.printStackTrace();
						    }
						}

					} else {
						if (readfile.isDirectory()) {
							String[] filelist2 = readfile.list();
							//System.out.println(filelist[i]);
							System.out.println("...............................file's length: "+filelist2.length);
							if (filelist2.length >= 7) {
								// readfile(filepath + "\\" + filelist[i]);
								readfile(filepath + "/" + filelist[i]);
							} else {
								hs_id.add(filelist[i]+".a");// 文件不够,可能图片或txt文件缺失
								System.out.println("...............................file isn't enough: "+filelist[i]+", file size: "+filelist2.length+"...............................");
							}

						}
					}
				}
			}

		} catch (Exception e) {
			System.out.println("...............................readfile() Exception: " + e.getMessage());
			e.printStackTrace();
		} finally {
			if (stmt_g != null) {
				try {
					stmt_g.close();
					stmt_g = null;
				} catch (SQLException e) {
					e.printStackTrace();
					stmt_g = null;
				}
			}
			if (stmt_g_s != null) {
				try {
					stmt_g_s.close();
					stmt_g_s = null;
				} catch (SQLException e) {
					e.printStackTrace();
					stmt_g_s = null;
				}
			}
			if (conn31 != null) {
				try {
					conn31.close();
					conn31 = null;
				} catch (SQLException e) {
					e.printStackTrace();
					conn31 = null;
				}
			}
		}

		return hs_id;
	}

	public static void deleteFolder(File dir) {
		if (dir.exists()) {
			File filelist[] = dir.listFiles();
			int listlen = filelist.length;
			for (int i = 0; i < listlen; i++) {
				if (filelist[i].isDirectory()) {
					deleteFolder(filelist[i]);
				} else {
					filelist[i].delete();
				}
			}
			dir.delete();// 删除当前目录
		}
	}

	public static void copyDirectiory(String sourceDir, String targetDir)
			throws IOException {
		// 新建目标目录
		(new File(targetDir)).mkdirs();
		// 获取源文件夹当前下的文件或目录
		File[] file = (new File(sourceDir)).listFiles();
		for (int i = 0; i < file.length; i++) {
			if (file[i].isFile()) {
				// 源文件
				File sourceFile = file[i];
				// 目标文件
				File targetFile = new File(new File(targetDir)
						.getAbsolutePath()
						+ File.separator + file[i].getName());
				copyFile(sourceFile, targetFile);
			}
			if (file[i].isDirectory()) {
				// 准备复制的源文件夹
				String dir1 = sourceDir + "/" + file[i].getName();
				// 准备复制的目标文件夹
				String dir2 = targetDir + "/" + file[i].getName();
				copyDirectiory(dir1, dir2);
			}
		}
	}


	public static void copyFile(File sourceFile, File targetFile)
			throws IOException {
		// 新建文件输入流并对它进行缓冲
		FileInputStream input = new FileInputStream(sourceFile);
		BufferedInputStream inBuff = new BufferedInputStream(input);

		// 新建文件输出流并对它进行缓冲
		FileOutputStream output = new FileOutputStream(targetFile);
		BufferedOutputStream outBuff = new BufferedOutputStream(output);

		// 缓冲数组
		byte[] b = new byte[1024 * 5];
		int len;
		while ((len = inBuff.read(b)) != -1) {
			outBuff.write(b, 0, len);
		}
		// 刷新此缓冲的输出流
		outBuff.flush();

		// 关闭流
		inBuff.close();
		outBuff.close();
		output.close();
		input.close();
	}

	public static void unRarFile(String targetPath, String absolutePath) {
		try {
			// 系统安装winrar的路径
			String cmd = "C:\\Program Files\\WinRAR\\winrar.exe";
			String unrarCmd = cmd + " x -r -p- -o+ " + absolutePath + " "
					+ targetPath;

			Runtime rt = Runtime.getRuntime();
			Process pre = rt.exec(unrarCmd);
			InputStreamReader isr = new InputStreamReader(pre.getInputStream());
			BufferedReader bf = new BufferedReader(isr);
			String line = null;
			while ((line = bf.readLine()) != null) {
				line = line.trim();
				if ("".equals(line)) {
					continue;
				}
				System.out.println(line);
			}

			bf.close();
		} catch (Exception e) {
			System.out.println("解压发生异常");
		}
	}

	public void fileUpload(HttpServletRequest req) {

	}

	public static String to_utf8(String utf8) {
		int len = utf8.length();
		String[] s = new String[len];
		// cn -> unicode
		for (int i = 0; i < len; i++) {
			char c = utf8.charAt(i);
			s[i] = Integer.toString(c, 16);
			// System.out.println(c + "\t\\u" + s[i]);
		}
		// System.out.println();
		// unicode -> cn

		for (int i = 0; i < len; i++) {
			char c = (char) Integer.valueOf(s[i], 16).intValue();
			// System.out.println("\\u" + s[i] + "\t" + c);
			// System.out.println(c);
			utf8 += c;
		}
		return utf8;
	}

	public static void unzipFile(String targetPath, String zipFilePath) {

		try {
			File zipFile = new File(zipFilePath);
			InputStream is = new FileInputStream(zipFile);
			ZipInputStream zis = new ZipInputStream(is);
			ZipEntry entry = null;
			System.out.println("开始解压:" + zipFile.getName() + "...");
			while ((entry = zis.getNextEntry()) != null) {
				String zipPath = entry.getName();
				try {

					if (entry.isDirectory()) {
						File zipFolder = new File(targetPath + File.separator
								+ zipPath);
						if (!zipFolder.exists()) {
							zipFolder.mkdirs();
						}
					} else {
						File file = new File(targetPath + File.separator
								+ zipPath);
						if (!file.exists()) {
							File pathDir = file.getParentFile();
							pathDir.mkdirs();
							file.createNewFile();
						}

						FileOutputStream fos = new FileOutputStream(file);
						int bread;
						while ((bread = zis.read()) != -1) {
							fos.write(bread);
						}
						fos.close();
					}
					System.out.println("成功解压:" + zipPath);

				} catch (Exception e) {
					System.out.println("解压" + zipPath + "失败");
					continue;
				}
			}
			zis.close();
			is.close();
			System.out.println("解压结束");
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	// 用JAVA自带的函数
	public static boolean isNumeric(String str) {
		for (int i = str.length(); --i >= 0;) {
			if (!Character.isDigit(str.charAt(i))) {
				return false;
			}
		}
		return true;
	}

	// mysql 数据库
	private static Connection mysql_31() {
		final String userName = "1111";
		final String password = "1111";
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			String url = "jdbc:mysql://localhost:3306/game";
			conn = DriverManager.getConnection(url, userName, password);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return conn;
	}

}
分享到:
评论

相关推荐

    PHP文件上传类

    为了简化这个过程,开发者通常会编写一个专门的文件上传类,以实现对上传过程的全面控制和错误处理。以下是对"PHP文件上传类"的详细解析: 1. **类的结构**: - 一个PHP文件上传类通常包含一系列的方法,如`upload...

    一个ftp上传下载类(MFC)

    在这个场景中,"一个ftp上传下载类(MFC)" 是一个使用MFC构建的类,它封装了FTP协议,使得开发者能够方便地在自己的应用中实现FTP的上传和下载功能。 FTP上传下载类的核心功能包括: 1. **连接与断开**:类应包含...

    无惧上传类 v2.2 最终版

    "无惧上传类 v2.2 最终版"是一个针对文件上传功能的程序库或组件,主要用于简化Web应用中的文件上传操作。这个版本是V2.2,通常意味着它已经经过了多次迭代和优化,提供了更好的性能、稳定性和用户体验。"最终版"的...

    asp上传大全之一无惧上传类

    ASP上传类是Web开发中一个重要的技术组成部分,主要用于处理用户通过网页上传文件的功能。在ASP(Active Server Pages)环境中,由于其服务器端脚本的特性,上传类的使用可以让开发者轻松实现文件上传到服务器的过程...

    asp无惧上传类UpFileClassV2.2.rar

    例如,以下是一个简单的ASP使用UpFileClassV2.2进行文件上传的示例: ```vbscript Dim upFile Set upFile = Server.CreateObject("UpFileClass.UpFileClass") upFile.MaxSize = 1048576 '限制上传文件大小为1MB ...

    ASP先锋无组件上传类.rar

    ASP先锋无组件上传类是一个专为ASP(Active Server Pages)平台设计的安全上传组件,它强调了安全性,无需使用FileSystemObject(FSO)组件,从而避免了因FSO引发的潜在安全问题。在ASP环境中,FSO允许程序对服务器...

    php文件上传,自己写的文件上传类,附带一个demo,欢迎大牛们提出意见和建议

    上传的文件需要存储在一个特定的目录下,类可能包含一个方法`setUploadDirectory()`来指定这个目录,同时确保目录存在并可写。此外,可能还有重命名文件的功能,以防止文件名冲突。 7. **错误处理**: 为了提供...

    艾恩无组件上传类

    "艾恩无组件上传类"是一个专为ASP(Active Server Pages)设计的上传类库,旨在简化文件上传的实现过程,让开发者能用最少的代码完成各种上传方式。这个类库的目标是提供一种高效且易用的方法来处理用户通过Web表单...

    asp上传类艾恩asp上传类

    "艾恩asp上传类"可能是指一个特定的第三方组件或库,用于简化ASP中的文件上传操作。 在ASP中,文件上传通常涉及以下步骤: 1. **HTML表单设计**:在HTML页面中,我们需要包含一个`&lt;input type="file"&gt;`字段,让...

    c# 完整版 上传下载类

    在C#编程中,开发一个完整的上传下载类是常见的需求,尤其在构建Web应用程序或桌面应用时。这个“c# 完整版 上传下载类”包含几个关键组件,如`DownLoadHelper`、`FileDown`、`FileUp`和`UpLoadFiles`,它们都是实现...

    无惧无组件上传类,ASP无组件上传

    总的来说,"无惧无组件上传类,ASP无组件上传"是一个实用的工具,它使得在ASP环境下无需额外组件就能实现文件上传功能,对于初学者或不想引入额外复杂性的开发者来说,是一个很好的选择。理解其工作原理和使用方法,...

    php中一个很好用的文件上传类.zip

    在这个"php中一个很好用的文件上传类.zip"压缩包中,包含了一个专为PHP设计的文件上传类,它提供了丰富的功能,帮助我们更方便、安全地处理文件上传操作。 首先,文件上传类通常会提供文件初始化功能。这意味着当...

    asp无组件上传类化境HTTP上传程序

    ASP无组件上传类化境HTTP上传程序是一种在ASP(Active Server Pages,动态服务器页面)环境下实现无需安装额外组件即可完成文件上传的技术。它依靠HTTP请求解析技术,通过编写ASP代码来实现客户端文件到服务器端的...

    一个功能强大的php文件上传类.zip

    这个"一个功能强大的php文件上传类.zip"提供了一个专为处理文件上传而设计的PHP类库,它包含了丰富的功能,可以简化上传过程并解决各种上传过程中可能遇到的问题。 首先,我们来了解一下文件上传的基本流程。当用户...

    化境ASP无组件上传类ashi整理版

    这个整理版是ashi基于化镜无组件上传类的基础上,根据自己的理解和实践,创建的一个示例项目,旨在帮助开发者更方便地控制上传文件的类型和大小,同时保持易用性。 在ASP环境中,文件上传通常涉及到客户端与服务器...

    html文件上传后,处理类对上传文件的jar包处理

    html文件上传后,处理类对上传文件的jar包处理html文件上传后,处理类对上传文件的jar包处理html文件上传后,处理类对上传文件的jar包处理html文件上传后,处理类对上传文件的jar包处理html文件上传后,处理类对上传...

    jsp页面上传类

    `JspFileUpload` 类是Java中用于处理JSP页面文件上传的一个实用工具类。它主要功能包括支持多个文件同时上传、返回上传后文件的名称,并且能够获取表单中的其他参数。以下是对该类的详细说明: 1. **类结构与属性**...

    php文件上传类

    然而,在实际项目中,我们通常会创建一个自定义的PHP文件上传类,以实现更灵活、更安全的文件上传管理。 这个"php文件上传类"应该具备以下关键功能和特性: 1. **设置上传限制**:首先,类应允许开发者定义上传...

    好用的一个php上传图片类.zip

    一个很好用的php图片上传类,包含了缩略图的一些功能,存放路径,水印图片的存放,大小限制,设定当前时间为图片名称,截取的数量,生成新的文件名,并附上use.php文件注明类的使用方法,供朋友们学习参考和使用这个...

    无惧上传类(解决多选问题)

    【标题】"无惧上传类(解决多选问题)"是一个专为ASP编程环境设计的文件上传解决方案,尤其针对用户在Web表单中进行多文件选择时的上传需求。该类库提供了一种高效且易用的方法,使得开发者可以轻松地在自己的ASP应用...

Global site tag (gtag.js) - Google Analytics