129 lines
4.0 KiB
Plaintext
129 lines
4.0 KiB
Plaintext
|
|
<%@ page contentType="text/html;charset=UTF-8"%><%@page import="java.util.*, java.io.*, java.lang.String, java.text.*, java.net.*" %><%
|
||
|
|
// request.setCharacterEncoding("utf-8");
|
||
|
|
|
||
|
|
//------------------------------------
|
||
|
|
// 0. 파라메터 받음
|
||
|
|
//------------------------------------
|
||
|
|
String sReportName = (request.getParameter("rptname") == null ? "" : request.getParameter("rptname"));
|
||
|
|
|
||
|
|
//------------------------------------
|
||
|
|
// 1. 상수 정의
|
||
|
|
//------------------------------------
|
||
|
|
//String sBasePath = "D:\\rexpert30\\RexServer30\\rebfiles\\samples\\";
|
||
|
|
String sBasePath = application.getRealPath("/") + "/rebfiles/";
|
||
|
|
|
||
|
|
sReportName = unescape(sReportName);
|
||
|
|
|
||
|
|
sReportName += ".reb";
|
||
|
|
|
||
|
|
//System.out.println(sReportName);
|
||
|
|
|
||
|
|
//------------------------------------
|
||
|
|
// 4. export 파일 읽어서 전송
|
||
|
|
//------------------------------------
|
||
|
|
File file = new File(sBasePath + "" + sReportName); // 절대경로
|
||
|
|
byte b[] = new byte[4062];
|
||
|
|
response.reset();
|
||
|
|
|
||
|
|
String strClient=request.getHeader("User-Agent");
|
||
|
|
if(strClient.indexOf("MSIE 5.5")>-1)
|
||
|
|
{
|
||
|
|
response.setContentType("application/x-msdownload; charset=euc-kr");
|
||
|
|
response.setHeader("Content-Disposition", "attachment;filename=report.reb"); //+new String(sReportName.getBytes("euc-kr"),"8859_1"));
|
||
|
|
//response.setHeader("Content-Disposition", "attachment;filename="+sReportName);
|
||
|
|
} else {
|
||
|
|
response.setContentType("application/x-msdownload; charset=euc-kr");
|
||
|
|
response.setHeader("Content-Disposition", "attachment;filename=report.reb"); //+new String(sReportName.getBytes("euc-kr"),"8859_1"));
|
||
|
|
//response.setHeader("Content-Disposition", "attachment;filename="+sReportName);
|
||
|
|
}
|
||
|
|
|
||
|
|
response.setHeader("Content-Transfer-Encoding", "binary;");
|
||
|
|
response.setHeader("Pragma", "no-cache;");
|
||
|
|
response.setHeader("Expires", "0;");
|
||
|
|
response.setContentLength((int)file.length()); //파일크기를 브라우저에 알려준다.
|
||
|
|
// IE 5.5는 형식이 다르므로 헤더를 각각 다르게 처리해 준다.
|
||
|
|
|
||
|
|
if (file.isFile())
|
||
|
|
{
|
||
|
|
out.clear();
|
||
|
|
|
||
|
|
BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file));
|
||
|
|
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
|
||
|
|
int read = 0;
|
||
|
|
while ((read = fin.read(b)) != -1){
|
||
|
|
outs.write(b,0,read);
|
||
|
|
outs.flush();
|
||
|
|
}
|
||
|
|
outs.close();
|
||
|
|
fin.close();
|
||
|
|
|
||
|
|
//out = pageContext.pushBody();
|
||
|
|
}
|
||
|
|
|
||
|
|
file = null;
|
||
|
|
%><%!
|
||
|
|
public String getCurrentPath(ServletContext application, HttpServletRequest request)
|
||
|
|
{
|
||
|
|
return new File(
|
||
|
|
application.getRealPath(
|
||
|
|
request.getServletPath()
|
||
|
|
)
|
||
|
|
).getParentFile().getAbsolutePath();
|
||
|
|
}
|
||
|
|
|
||
|
|
public String escape(String src) {
|
||
|
|
int i;
|
||
|
|
char j;
|
||
|
|
StringBuffer tmp = new StringBuffer();
|
||
|
|
tmp.ensureCapacity(src.length() * 6);
|
||
|
|
|
||
|
|
for (i = 0; i < src.length(); i++) {
|
||
|
|
j = src.charAt(i);
|
||
|
|
if (Character.isDigit(j) || Character.isLowerCase(j)
|
||
|
|
|| Character.isUpperCase(j))
|
||
|
|
tmp.append(j);
|
||
|
|
else if (j < 256) {
|
||
|
|
tmp.append("%");
|
||
|
|
if (j < 16)
|
||
|
|
tmp.append("0");
|
||
|
|
tmp.append(Integer.toString(j, 16));
|
||
|
|
} else {
|
||
|
|
tmp.append("%u");
|
||
|
|
tmp.append(Integer.toString(j, 16));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return tmp.toString();
|
||
|
|
}
|
||
|
|
|
||
|
|
public String unescape(String src) {
|
||
|
|
StringBuffer tmp = new StringBuffer();
|
||
|
|
tmp.ensureCapacity(src.length());
|
||
|
|
int lastPos = 0, pos = 0;
|
||
|
|
char ch;
|
||
|
|
|
||
|
|
while (lastPos < src.length()) {
|
||
|
|
pos = src.indexOf("%", lastPos);
|
||
|
|
if (pos == lastPos) {
|
||
|
|
if (src.charAt(pos + 1) == 'u') {
|
||
|
|
ch = (char) Integer.parseInt(src.substring(pos + 2, pos + 6), 16);
|
||
|
|
tmp.append(ch);
|
||
|
|
lastPos = pos + 6;
|
||
|
|
} else {
|
||
|
|
ch = (char) Integer.parseInt(src.substring(pos + 1, pos + 3), 16);
|
||
|
|
tmp.append(ch);
|
||
|
|
lastPos = pos + 3;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (pos == -1) {
|
||
|
|
tmp.append(src.substring(lastPos));
|
||
|
|
lastPos = src.length();
|
||
|
|
} else {
|
||
|
|
tmp.append(src.substring(lastPos, pos));
|
||
|
|
lastPos = pos;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return tmp.toString();
|
||
|
|
}
|
||
|
|
%>
|