ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 뷰단에서 선택한 파일들만 알집으로 압축하여 다운로드
    Web Programming 2023. 2. 12. 19:34
    728x90
    반응형
    @RequestMapping(value = "/fileAllDownload")
    	protected void finalfileAllDownload(HttpServletRequest request, HttpServletResponse response, HttpSession session, FileVO fileVO) throws IOException{
    		
    		List<FileVO> getList	= fileService.finalReportAll(fileVO);
    		
    		String[] files = new String[getList.size()];
    		String[] filesOrg = new String[getList.size()];
    		Long filesActSum = new Long(0);
    		
    		for(int i = 0; i<getList.size(); i++) {
    			
    			files[i] = getList.get(i).getFileName1()+"."+getList.get(i).getExt();
    			
    			files[i] = getList.get(i).getFileName2();
    			
    			filesOrg[i] = getList.get(i).getFileName3();
    			
    			filesActSum += getList.get(i).getFileSize4();
    			
    		}
    		
    		int actSize=Math.toIntExact(filesActSum); 
    		 
    		ZipOutputStream zout = null; 
    		String zipName = "finalReportAll.zip"; //ZIP 압축 파일명 
    		String tempPath = ""; 
    		
    		if (files.length > 0) { 
    			
    			try{
    				
    				tempPath = "/temp/"; //ZIP 압축 파일 저장경로 
    				
    			tempPath = request.getSession().getServletContext().getRealPath("/") + "uploadFile/경로/";
    		
    		//ZIP파일 압축 START 
    		//zout = new ZipOutputStream(new FileOutputStream(tempPath + zipName)); 
    		zout = new ZipOutputStream(new FileOutputStream(tempPath + zipName)); 
    		byte[] buffer = new byte[actSize]; 
    		FileInputStream in = null; 
    		for ( int k=0; k<files.length; k++){ 
    			in = new FileInputStream(request.getSession().getServletContext().getRealPath("/") + "uploadFile/경로/" + files[k]); //압축 대상 파일 
    			/*zout.putNextEntry(new ZipEntry(files[k])); //압축파일에 저장될 파일명 
    */			zout.putNextEntry(new ZipEntry(filesOrg[k])); //압축파일에 저장될 파일명
    		
    		int len; while((len = in.read(buffer)) > 0){ 
    			zout.write(buffer, 0, len); //읽은 파일을 ZipOutputStream에 Write 
    			} 
    		
    		zout.closeEntry(); 
    		in.close(); 
    		} 
    		
    		zout.close(); //ZIP파일 압축 END 
    		
    		//파일다운로드 START
    		response.setContentType("application/zip"); 
    		response.addHeader("Content-Disposition", "attachment;filename=" + zipName); 
    		
    		FileInputStream fis = new FileInputStream(tempPath + zipName); 
    		BufferedInputStream bis = new BufferedInputStream(fis); 
    		ServletOutputStream so = response.getOutputStream(); 
    		BufferedOutputStream bos = new BufferedOutputStream(so); 
    		
    		int n = 0; 
    		while((n = bis.read(buffer)) > 0){ 
    			
    			bos.write(buffer, 0, n); bos.flush(); 
    			
    		} 
    		
    		if(bos != null) bos.close(); 
    		if(bis != null) bis.close(); 
    		if(so != null) so.close(); 
    		if(fis != null) fis.close(); //파일다운로드 END 
    		
    		}catch(IOException e){ //Exception 
    			
    			System.out.println("fileDownload Error : " + new Date());
    			
    		}finally{ 
    			
    			if (zout != null){ 
    				
    				zout = null; 
    				
    							} 
    			} 
    		}
    	}

    테이블 자료

    db 데이터의 file_size 를 찾아서 합으로 알집파일 만들기 !!

    728x90
    반응형

    'Web Programming' 카테고리의 다른 글

    자바 쿠키 생성/삭제/조회  (0) 2023.02.12
    DB에서 받아온 VO 리스트를 add 시키기  (0) 2023.02.12
    long 변수 선언  (0) 2023.02.12
    MySQL SHOW DATABASES 데이터베이스 보기  (0) 2023.02.12
    502 Bad Gateway  (0) 2023.02.12
Designed by Tistory.