사이트 작업중에 파일 확장자에 따르는 파일 형태를 지정하려고 할때
서버 설정을 바꾸지 않고 파일 타입을 지정하여 다운로드시킬 필요가 있을 경우가 가끔 있다.
(가장 베스트한 것은 서버 설정을 바꾸는 것이겠지만..)
MIME-TYPE을 서버 설정 상관없이 지정하여 다운로드 되도록 하는 JSP 소스
<%@ page import="java.net.URLDecoder"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.URL"%> <%@ page import="java.io.InputStream"%> <%@ page import="java.io.OutputStream"%> <%@ page import="java.io.FileInputStream"%> <%@ page import="java.io.BufferedInputStream"%> <%@ page import="java.io.BufferedOutputStream"%> <%@page import="java.io.File"%> <% String fileName = URLDecoder.decode(request.getParameter("downFileName"),"UTF-8"); fileName = "c:\\server\\file\\"+fileName; String fileType = fileName.substring(fileName.lastIndexOf(".")+1);; File file = new File(fileName); long fileSize = file.length(); if(file == null || !file.exists() || file.length() <= 0 || file.isDirectory()){ %> <title> Mooki </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript"> history.back(); </script> <% } if (fileType.equals("hwp")){ response.setContentType("application/x-hwp"); } else if (fileType.equals("pdf")){ response.setContentType("application/pdf"); } else if (fileType.equals("ppt") || fileType.equals("pptx")){ response.setContentType("application/vnd.ms-powerpoint"); } else if (fileType.equals("doc") || fileType.equals("docx")){ response.setContentType("application/msword"); } else if (fileType.equals("xls") || fileType.equals("xlsx")){ response.setContentType("application/vnd.ms-excel"); } else { response.setContentType("application/octet-stream"); } response.setHeader("Content-Disposition","attachment;filename="+fileName); BufferedInputStream bis = null; BufferedOutputStream bos = null; try{ byte buffer[] = new byte[256]; bis = new BufferedInputStream(new FileInputStream(new File(fileName))); bos = new BufferedOutputStream(response.getOutputStream()); while(bis.read(buffer) != -1) bos.write(buffer); }catch (Exception e){ }finally{ try{ if(bis != null) bis.close(); if(bos != null) bos.close(); } catch(Exception e1){ e1.printStackTrace(); } } %>
파일이 있을 경우 강제로 다운로드 받고
아니면....................... 다시 뒤로 ~ ㅎㅎ
으어~~