jsp web上传zip文件的处理

本文介绍了一种处理ZIP文件上传的方法,包括如何通过Struts2框架获取上传的ZIP文件并将其保存到指定目录,接着对ZIP文件进行解压,并验证解压后的文件数量及命名是否符合预期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目有一模块上处理上传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();

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值