사이트 작업중에 파일 확장자에 따르는 파일 형태를 지정하려고 할때

서버 설정을 바꾸지 않고 파일 타입을 지정하여 다운로드시킬 필요가 있을 경우가 가끔 있다.

(가장 베스트한 것은 서버 설정을 바꾸는 것이겠지만..)



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();
      }
    }
%>


파일이 있을 경우 강제로 다운로드 받고

아니면....................... 다시 뒤로 ~ ㅎㅎ



으어~~



Posted by Mooki
,