<%@pageimport="java.io.FileNotFoundException"%> <%@pageimport="java.io.FileInputStream"%> <%@pageimport="java.io.File"%> <%@pageimport="java.io.OutputStream"%> <%@pageimport="java.io.InputStream"%> <%@ page language="java" contentType="text/html; charset=euc-kr" pageEncoding="euc-kr"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <title>Insert title here</title> </head> <body> <h2>다운로드페이지</h2> <% //1. 인코딩 //string은 그냥 담아도 (=String filename=request.getParameter("filename"))되고 객체에 담아도된다 //String filename= new String(request.getParameter("filename")); //파라미터 데이터를 가져와서 8859_1 인코딩방식으로 바꾼 뒤 EUC-KR로 한번 더 바꾸는 것 String filename = new String((request.getParameter("filename")).getBytes("8859_1"),"euc-kr");
//2. 파일저장경로(절대경로) String filePath = "D:/upfile";
//3. 입출력시 필요한 객체 생성 InputStream in = null; OutputStream os = null; File file = null; File viewFile = null;
// 4. 예외처리 try{ //5. 변수생성 : 인코딩시 변경되는 string 따로 저장하려고 3개 변수 만듬 String fname1 = ""; String fname2 = ""; String fname = ""; fname = filename; fname1 = new String(fname.getBytes("8859_1"), "euc-kr"); //9. try catch구문으로 묶기 try{ //6. 전달된 파일 경로,이름 사용해서 파일 객체 생성 file = new File(filePath, fname); viewFile = new File(filePath,fname1); //확인차 페이지에 출력 out.print("file : "+file+"<br>"); out.print("viewfile : "+viewFile); //8. 파일을 읽어오기 위해서 입력 통로를 생성 // 객체를 만든 순간 = 해당 폴더로 이동해서 파일을 선택한 상황임. // InputStream in = null; in = new FileInputStream(file); //업캐스팅 }catch(FileNotFoundException e){ skip = true; } //10. String변수만들어주기 fname2 = new String(fname1.getBytes("euc-kr"), "8859_1"); //11. 응답객체초기화 for 다운로드 팝업창 생성된 것처럼 보이게끔하여 다운로드 진행중임을 표시 response.reset();