<%/** ================================================================Mobicator----------------------------------------------------------------@description {file} Parameter로 지정한 Id에 해당하는 file을 Download* CAUTION: 본 JSP File은 File을 Download하는 File이므로임의로 '% >'와 '< %'사이를 띄우거나 CR/LF를 줘서는 안된다.@paramfile Download할 File의 Id@includeN/A@usage/download.jsp?file={file_id}@author pluto@date 2008. 02. 20================================================================*/%><%@ page language="java" contentType="application/unknown; charset=UTF-8" pageEncoding="UTF-8"%><%-- All of Import here--%><%@page import="java.io.File"%><%@page import="java.io.InputStream"%><%@page import="java.io.OutputStream"%><%@page import="java.io.FileInputStream"%><%@page import="java.io.BufferedOutputStream"%><%@page import="java.io.BufferedInputStream"%><%@page import="java.io.UnsupportedEncodingException"%><%!private int DEFAULT_BUFFER_SIZE = 2048;private String HEAD_CONTENT_TYPE = "Content-Type";private String HEAD_CONTENT_DISPOSITION = "Content-Disposition";private String HEAD_CONTENT_TRANSFER_ENCODE = "Content-Transfer-Encoding";private String HEAD_PRAGMA = "Pragma";private String HEAD_EXPIRES = "Expires";private String HEAD_CONTENT_LENGTH = "Content-Length";private String CONTENT_TYPE_MATTER = "doesn/matter;";private String CONTENT_TYPE_OCTET = "application/octet-stream;";private String CONTENT_TRANSFER_ENCODE = "binary;";private String PRAGMA = "no-cache;";private String EXPIRES = "-1";private String USER_AGENT = "USER-AGENT";private String ENCODING = "UTF-8";private String CHAR_SET = "charset=" + ENCODING + ";";private String FILE_NAME = "filename=";private String ATTACHMENT = "attachment;";private String LOCAL_PATH = "/localPath/";private String MSIE_4 = "MSIE 4";private String MSIE_5_5 = "MSIE 5.5";private String FIRE_FOX = "Firefox";public String getFileName( String fileName, String ua ) throws UnsupportedEncodingException {if( ua.indexOf( FIRE_FOX ) >= 0 ) {return fileName;} else {return java.net.URLEncoder.encode( fileName, "UTF-8" ).replaceAll( "\\+", "%20" );}}%><%InputStream inStream = null;OutputStream outStream = null;byte[] buffer = null;String docBase = getServletContext().getRealPath( "/" );String ua = request.getHeader( USER_AGENT );String id = request.getParameter( "file" );String url = request.getRequestURL().toString();File downloadFile = new File( LOCAL_PATH + id );String fileName = getFileName( downloadFile.getName(), ua );if( ua.indexOf( MSIE_4 ) >= 0 || ua.indexOf( MSIE_5_5 ) >= 0 ) {response.setHeader( HEAD_CONTENT_TYPE, CONTENT_TYPE_MATTER + CHAR_SET );response.setHeader( HEAD_CONTENT_DISPOSITION, FILE_NAME + fileName + ";" );} else {response.setHeader( HEAD_CONTENT_TYPE, CONTENT_TYPE_OCTET + CHAR_SET );response.setHeader( HEAD_CONTENT_DISPOSITION, ATTACHMENT + FILE_NAME + fileName + ";" );}response.setHeader( HEAD_CONTENT_TRANSFER_ENCODE, CONTENT_TRANSFER_ENCODE );response.setHeader( HEAD_PRAGMA, PRAGMA );response.setHeader( HEAD_EXPIRES, EXPIRES );response.setHeader( HEAD_CONTENT_LENGTH, String.valueOf( downloadFile.length() ) );if( downloadFile.isFile() ) {try {inStream = new BufferedInputStream( new FileInputStream( downloadFile ) );outStream = new BufferedOutputStream( response.getOutputStream() );buffer = new byte[ DEFAULT_BUFFER_SIZE ];int bufferSize = 0;while( (bufferSize = inStream.read( buffer )) != -1 ) {outStream.write( buffer, 0, bufferSize );outStream.flush();}} catch( Exception e ) {e.printStackTrace();} finally {if( inStream != null ) {inStream.close();}}}%>
2013년 3월 20일 수요일
Download Page - JSP
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기