1669
No
<%@ 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> <% } %>
댓글 ( 4)
댓글 남기기