YNICTE/ClipReport4/ClipReport4/ClipAndFarsoo.aspx

141 lines
5.0 KiB
Plaintext

<%@ Page Language="C#" AutoEventWireup="true" %>
<%
ReportUtil reportUtil = ReportUtil.getInstance();
string passName = Request.Params["ClipID"];
Response.AddHeader("Cache-Control", "no-store");
Response.AddHeader("Connection", "close");
bool isAsync = "true".Equals(Request.Params["async"] + "", StringComparison.CurrentCultureIgnoreCase);
bool isExportPassName = passName != null && new Regex("R(0[5-9]|(10))").IsMatch(passName);
bool isExportDownload = !isAsync && isExportPassName;
if (null != passName)
{
// 문서 암호화 처리블록.
if (isExportDownload)
{
string reportKey = Request.Params["uid"];
// 임의의 파일 경로를 지정할 수 있습니다.
string directory = System.Web.HttpContext.Current.Server.MapPath("~/resources/temp/" + reportKey);
System.IO.Directory.CreateDirectory(directory);
ExportInfo exportInfo = reportUtil.getExport(Request, directory);
int errorCode = exportInfo.ErrorCode;
// exportInfo.ErrorCode == 0 정상
// exportInfo.ErrorCode == 1 세션이 종료 되었거나, 결과물(document) 파일을 찾을 수 없을 때 오류
// exportInfo.ErrorCode == 2 문서 생성중 오류 발생
// exportInfo.ErrorCode == 3 파일 서버에 저장중에 오류 발생
// 에러 처리.
if (exportInfo.ErrorCode != 0)
{
Response.Write("{\"status\": false, \"event\":20}");
return;
}
// 로컬에 저장된 파일 경로
String filePath = exportInfo.FilePath;
/*******
*
* 여기서 저장된 파일 경로를 이용하여 문서 암호화 처리.
*
******/
// exportInfo.FilePath = "바뀐 파일 경로 설정 가능";
// 아래 라인을 통하여 사용자에게 생성된 문서 파일 보내기.
// 아래 코드는 단순히 파일 경로(filePath)를 사용자의 브라우저로 전달합니다.
reportUtil.sendExport(Request, Response, exportInfo);
System.IO.File.Delete(exportInfo.FilePath);
System.IO.Directory.Delete(directory);
}
// R01 : 비동기적으로 리포트를 생성한다.
else if ("R01".Equals(passName))
{
reportUtil.responseForCreateReport(Request, Response);
}
// R02 : 리포트 뷰를 호출한다.
// R11 : HTML 인쇄를 위한 export 를 요청합니다.
else if ("R02".Equals(passName) || "R11".Equals(passName))
{
reportUtil.responseForView(Request, Response);
}
// R03 : 리포트 생성 상태를 비동기로 확인합니다.
else if ("R03".Equals(passName))
{
Response.AddHeader("Connection", "Keep-Alive");
Response.AddHeader("Keep-Alive", "timeout=5, max=99");
reportUtil.responseForStatus(Request, Response);
}
// R04 : 리포트 삭제를 요청합니다. (세션 종료 및 자원 반환)
else if ("R04".Equals(passName))
{
reportUtil.deleteReport(Request, Response);
}
// export 를 요청합니다.
// R06 ~ R08 : 문서 파일 export
// R09 : 인쇄를 위한 export
else if (isAsync && isExportPassName)
{
reportUtil.responseForExport(Request, Response);
}
// R16 : export 상태를 비동기로 확인합니다. 이 명령이 호출되기 전에 R08 을 통하여 동기적으로 export 된 문서를 내려줘야 합니다.
else if ("R16".Equals(passName))
{
reportUtil.responseForExportStatus(Request, Response);
}
// 데몬서버 지원 R160 : export 상태를 비동기로 확인합니다.
else if ("R160".Equals(passName))
{
reportUtil.responseForExportToken(Request, Response);
}
// 데몬서버 지원 R161 : export 된 문서 파일을 다운로드 합니다.
else if ("R161".Equals(passName))
{
reportUtil.responseForExportBinaryDocument(Request, Response);
}
// R17 : 접근성 뷰어(html4)에 포함된 번들 이미지를 다운로드 받을 수 있습니다.
else if ("R17".Equals(passName))
{
reportUtil.responseForBundle(Request, Response);
}
else if ("R50".Equals(passName))
{
}
else if ("R51".Equals(passName))
{
}
else if ("R15".Equals(passName))
{
}
else if ("R15".Equals(passName))
{
}
else if ("S01".Equals(passName))
{
reportUtil.responseForCookies(Request, Response);
}
else if ("is_daemon".Equals(passName))
{
Response.ContentType = "text/html; charset=UTF-8";
Response.AddHeader("Cache-Control", "Private, No-store, No-cache, Must-Revalidate");
Response.Write("({'success':true})");
}
//else if ("R150".Equals(passName) && environment.isDebug())
//{
//reportUtil.responseForEnvironment(Request, Response);
//}
else
{
Response.Close();
}
return;
}
%>