JSP

 

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
 <%@ page trimDirectiveWhitespaces="true" %> 
<%@ page import="java.io.*"%>
<%@ page import="java.text.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
 
<%

	if(session.getAttribute("admin")==null){
		response.sendRedirect("/");
		return;
	}
		
    request.setCharacterEncoding("UTF-8"); 
 
    // 파일 업로드된 경로
    String root = "C:\\tomcat9\\webapps\\";
    String savePath = root + "upfiles";
 
    // 서버에 실제 저장된 파일명
    String filename = request.getParameter("filename");
    filename= URLDecoder.decode(filename, "UTF-8");
    // 실제 내보낼 파일명
    String orgfilename =filename;
      
    
    InputStream in = null;
    OutputStream os = null;
    File file = null;
    boolean skip = false;
    String client = "";
 
    try{         
 
        // 파일을 읽어 스트림에 담기
        try{
            file = new File(savePath, filename);
            in = new FileInputStream(file);
        }catch(FileNotFoundException fe){
            skip = true;
        }
         
        client = request.getHeader("User-Agent");
 
        // 파일 다운로드 헤더 지정
        response.reset() ;
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Description", "JSP Generated Data");
 
 
 
        
        if(!skip){             
            // IE
            String header = request.getHeader("User-Agent");
            if (header.contains("MSIE") || header.contains("Trident")) {
            	orgfilename = URLEncoder.encode(orgfilename,"UTF-8").replaceAll("\\+", "%20");
                response.setHeader("Content-Disposition", "attachment;filename=" + orgfilename + ";");
            } else {
            	orgfilename = new String(orgfilename.getBytes("UTF-8"), "ISO-8859-1");
                response.setHeader("Content-Disposition", "attachment; filename=\"" + orgfilename + "\"");
            }

            
            
            response.setHeader ("Content-Length", ""+file.length() );
            response.setHeader("Content-Type", "application/octet-stream");
            response.setHeader("Content-Transfer-Encoding", "binary;");
            response.setHeader("Pragma", "no-cache;");
            response.setHeader("Expires", "-1;");
 
       
            os = response.getOutputStream();
            byte b[] = new byte[(int)file.length()];
            int leng = 0;
             
            while( (leng = in.read(b)) > 0 ){
                os.write(b,0,leng);
            }
 
        }else{
            response.setContentType("text/html;charset=UTF-8");
            out.println("<script language='javascript'>alert('파일을 찾을 수 없습니다');history.back();</script>");
        }
        os.flush();
        in.close();       
        os.close();
 
    }catch(Exception e){    
    	//out.println("<script language='javascript'>alert('파일을 찾을 수 없습니다');history.back();</script>");
    	//e.printStackTrace();      
    }finally{
    	try{
    		if(in!=null)in.close();
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	
    	try{
    		if(os!=null)os.close();
    	}catch(Exception e){
    		e.printStackTrace();
    	}
%>    	
  <script>
  self.close();
  </script>  
  
<%

  }

%>

 

 

about author

PHRASE

Level 60  라이트

천지 자연의 도(道)의 성한 공덕과 큰 업적은 더할 수 없이 지극한 것이다. 덕업(德業)을 칭송한 말. -역경

댓글 ( 4)

댓글 남기기

작성

JSP 목록    more