2017. 8. 6. 00:20
1. 파일 다운로드(filedown.jsp)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | <%@ page language= "java" contentType= "text/html; charset=UTF-8" %> <%@ page import = "java.io.*" %> <%@ page import = "java.text.*" %> <%@ page import = "java.lang.*" %> <%@ page import = "java.util.*" %> <%@ page import = "java.net.*" %> <% request.setCharacterEncoding( "UTF-8" ); // 파일 업로드된 경로 String root = request.getSession().getServletContext().getRealPath( "/" ); String savePath = root + "upload" ; // 서버에 실제 저장된 파일명 String filename = "20140819151221.zip" ; // 실제 내보낼 파일명 String orgfilename = "테스트.zip" ; 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 if (client.indexOf( "MSIE" ) != - 1 ){ response.setHeader ( "Content-Disposition" , "attachment; filename=" + new String(orgfilename.getBytes( "KSC5601" ), "ISO8859_1" )); } else { // 한글 파일명 처리 orgfilename = new String(orgfilename.getBytes( "utf-8" ), "iso-8859-1" ); response.setHeader( "Content-Disposition" , "attachment; filename=\"" + orgfilename + "\"" ); response.setHeader( "Content-Type" , "application/octet-stream; charset=utf-8" ); } response.setHeader ( "Content-Length" , "" +file.length() ); 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>" ); } in.close(); os.close(); } catch (Exception e){ e.printStackTrace(); } %> |
response.setHeader("Content-Disposition", "attachment; filename=파일명.doc") 에서 filename을 지정하면 해당 파일명대로 사용자에게 보여진다.
2. 파일 다운로드 링크걸기
1 | < a href = "filedown.jsp" >파일 다운받기</ a > |