jsp web上传zip文件的处理

最近项目有一模块上处理上传ZIP文件,总结一下处理方法

 File[] files=null;
	   	try {
			
			MultiPartRequestWrapper mpRequest =(MultiPartRequestWrapper)request; 		  //struts2:对REQUEST进行转换,用于得到上传文件
			HttpSession session=request.getSession();
			files = mpRequest.getFiles("upload");    									
			String[] fileNames = mpRequest.getFileNames("upload");                        //得到文件名
			String folder = request.getSession().getServletContext().getRealPath("input");//文件存放路径
			for(int i=0;i<files.length;i++){
				File file = new File(folder,fileName[i]);									//存放文件
		InputStream in;															//输入流
		try {
			
			in = new FileInputStream(item);										//得到文件上传流
			FileOutputStream out = new FileOutputStream(files[i]);
			byte[] buffer = new byte[4096]; 									// To hold file contents
			int bytes_read;
			
		
	
			while ((bytes_read = in.read(buffer)) != -1) { 
				out.write(buffer, 0, bytes_read);
			}
		
			if (in != null) {														//关闭输入流
				try {
				    in.close();
				} catch (IOException e) {
				    e.printStackTrace();
				}
			}
			if (out != null) {														//关闭输出流
				try {
				    out.close();
				} catch (IOException e) {
				    e.printStackTrace();
				}
			}
	
			UnZipper un=UnZipper.getInstance();										//Zip文件类实例化	
			
			un.UnZip(folder+"\\"+fileName);											//解压ZIP文件(在服务器存储空间中)
	
			fileName =fileName.replace('/', '\\').substring(0,fileName.lastIndexOf("."))+"\\";  //得到解压后文件夹名称
	
			dirFile = new File(folder+"\\"+fileName);								//得到解压后文件夹路径
			File[] list = FileUtil.listSortedFiles(dirFile);						//遍立文件夹,得到文件夹所有文件
			
			if(list!=null&&list.length<5){											//如果文件数为小于5个,抛出
				throw new BusinessException("文件数必需为5个");
			}	
			
			if(list!=null&&list.length==5){											//文件名不符,抛出
				for (int i = 0; i < list.length; i++){
					if(!list[i].getName().equals("F"+(i+1)+".txt")){
						throw new BusinessException("文件名称格式必需为F1.txt~F5.txt");
					}
					
				}
			}
				files[i].delete();                                                        //删除上传文件
		
			}
	
			
	
		} catch (Exception e) {
			if(files!=null){
				for(File f:files){
					if(f!=null){
						f.delete();														  //删除上传文件
					}
				}

			}
			e.printStackTrace();

  解后得到文件后,进行业务处理

你可能感兴趣的:(jsp,Web,F#)