diff --git a/src/main/java/kcc/kccadr/adjst/service/impl/AdjstReqServiceImpl.java b/src/main/java/kcc/kccadr/adjst/service/impl/AdjstReqServiceImpl.java index 10d7f0a7..7217d46e 100644 --- a/src/main/java/kcc/kccadr/adjst/service/impl/AdjstReqServiceImpl.java +++ b/src/main/java/kcc/kccadr/adjst/service/impl/AdjstReqServiceImpl.java @@ -1163,8 +1163,8 @@ public class AdjstReqServiceImpl extends EgovAbstractServiceImpl implements Adj public RestResponse selectRespondentSchChk(AdjstReqVO adjstReqVO) { - adjstReqVO.setRpplNm(egovCryptoUtil.encrypt(adjstReqVO.getRpplNm())); - adjstReqVO.setRpplEmail(egovCryptoUtil.encrypt(adjstReqVO.getRpplEmail())); + adjstReqVO.setRpplNm(egovCryptoUtil.encrypt(adjstReqVO.getRpplNm()).trim()); + adjstReqVO.setRpplEmail(egovCryptoUtil.encrypt(adjstReqVO.getRpplEmail()).trim()); log.debug("adjstReqVO.getRpplNm() :: [{}]", adjstReqVO.getRpplNm()); log.debug("adjstReqVO.getRpplEmail() :: [{}]", adjstReqVO.getRpplEmail()); diff --git a/src/main/java/kcc/kccadr/xxx/web/fileUploadAndDownloadSampleController.java b/src/main/java/kcc/kccadr/xxx/web/fileUploadAndDownloadSampleController.java new file mode 100644 index 00000000..a6bfe297 --- /dev/null +++ b/src/main/java/kcc/kccadr/xxx/web/fileUploadAndDownloadSampleController.java @@ -0,0 +1,55 @@ +package kcc.kccadr.xxx.web; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import kcc.let.cop.bbs.service.BoardMasterVO; +import kcc.let.cop.bbs.service.BoardVO; +import kcc.let.uat.uia.service.SsoLoginVO; + +/** + * 파일 첨부에 대한 샘플 컨트롤러 서비스. + * @author 이준호 + * @since 2021.10.01 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *   
+ *  수정일               수정자              수정내용
+ *  ----------   --------    ---------------------------
+ *  2022.09.15   이준호              최초 생성
+ * 
+ */ + +@Controller +public class fileUploadAndDownloadSampleController { + + /** 로그설정 */ + private static final Logger LOGGER = LoggerFactory.getLogger(fileUploadAndDownloadSampleController.class); + + /** + * (사용자)게시물 등록을 위한 등록페이지로 이동한다. + * + * @param boardVO + * @param model + * @return + * @throws Exception + */ + @RequestMapping("/web/fileUploadAndDownloadSample.do") + public String fileUploadAndDownloadSample() throws Exception { + return "kccadr/xxx/fileUploadAndDownloadSample"; + } + +} \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/popup/adjstReqOpenExamplePop.jsp b/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/popup/adjstReqOpenExamplePop.jsp index 8a2653c6..6e8f7f45 100644 --- a/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/popup/adjstReqOpenExamplePop.jsp +++ b/src/main/webapp/WEB-INF/jsp/kccadr/adjPgrMgr/apm/popup/adjstReqOpenExamplePop.jsp @@ -52,7 +52,7 @@ var exmpCd = $("#exmpCd").val(); console.log(exmpCd.replace(/(^0+)/, "")); var perId = '#reqCn'+exmpCd.replace(/(^0+)/, ""); - $(opener.document).find(perId).text($('#exmpCn').text()); + $(opener.document).find(perId).val($('#exmpCn').text()); window.close(); }); diff --git a/src/main/webapp/WEB-INF/jsp/kccadr/xxx/fileUploadAndDownloadSample.jsp b/src/main/webapp/WEB-INF/jsp/kccadr/xxx/fileUploadAndDownloadSample.jsp new file mode 100644 index 00000000..2fecaa0b --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/kccadr/xxx/fileUploadAndDownloadSample.jsp @@ -0,0 +1,74 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> +<% + pageContext.setAttribute("crlf", "\r\n"); +%> + + + + + + + +
+
+
+

+ 파일 첨부 샘플 페이지 +

+
+
+
+

파일 첨부 샘플 페이지

+
+ + + + + + + + + + + + + + + +
샘플 페이지
+

필수입력 항목*

+

내용

+
+ + +
+

필수입력 항목*

+

첨부파일

+
+
+ + + +
+
+
+
+ + +
+
+ +
+
+ + + diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ai/popup/adjstIncidentDetailPop.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ai/popup/adjstIncidentDetailPop.jsp index d7020df7..0b975d86 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ai/popup/adjstIncidentDetailPop.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ai/popup/adjstIncidentDetailPop.jsp @@ -142,7 +142,7 @@

- + <%-- 이메일 수신여부

@@ -171,7 +171,7 @@

- + --%> @@ -256,7 +256,7 @@

- + <%-- 이메일 수신여부

@@ -285,7 +285,7 @@

- + --%> 대리신청서 @@ -385,7 +385,7 @@

- + <%-- 이메일 수신여부

@@ -414,7 +414,7 @@

- + --%> @@ -485,7 +485,7 @@

- + <%-- 이메일 수신여부

@@ -514,7 +514,7 @@

- + --%> 대리신청서 diff --git a/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/adjstReqStatusTabDetail.jsp b/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/adjstReqStatusTabDetail.jsp index e9753738..e01a3e81 100644 --- a/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/adjstReqStatusTabDetail.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/kccadr/accdnt/ars/tab/adjstReqStatusTabDetail.jsp @@ -11,6 +11,7 @@ 조정진행 + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/combine.html b/src/main/webapp/innorix/exam/combine.html new file mode 100644 index 00000000..b62ff6bb --- /dev/null +++ b/src/main/webapp/innorix/exam/combine.html @@ -0,0 +1 @@ + ← 예제 목록


| \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/data/INNORIX Platform WP v9.2 Manual(KR) (1)(1).pdf b/src/main/webapp/innorix/exam/data/INNORIX Platform WP v9.2 Manual(KR) (1)(1).pdf new file mode 100644 index 00000000..0c5fb6e4 Binary files /dev/null and b/src/main/webapp/innorix/exam/data/INNORIX Platform WP v9.2 Manual(KR) (1)(1).pdf differ diff --git a/src/main/webapp/innorix/exam/data/INNORIX Platform WP v9.2 Manual(KR) (1).pdf b/src/main/webapp/innorix/exam/data/INNORIX Platform WP v9.2 Manual(KR) (1).pdf new file mode 100644 index 00000000..0c5fb6e4 Binary files /dev/null and b/src/main/webapp/innorix/exam/data/INNORIX Platform WP v9.2 Manual(KR) (1).pdf differ diff --git a/src/main/webapp/innorix/exam/data/다수 피신청인 오류.JPG b/src/main/webapp/innorix/exam/data/다수 피신청인 오류.JPG new file mode 100644 index 00000000..d576297f Binary files /dev/null and b/src/main/webapp/innorix/exam/data/다수 피신청인 오류.JPG differ diff --git a/src/main/webapp/innorix/exam/download.html b/src/main/webapp/innorix/exam/download.html new file mode 100644 index 00000000..e99b142b --- /dev/null +++ b/src/main/webapp/innorix/exam/download.html @@ -0,0 +1,53 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/download.jsp b/src/main/webapp/innorix/exam/download.jsp new file mode 100644 index 00000000..5408f3cc --- /dev/null +++ b/src/main/webapp/innorix/exam/download.jsp @@ -0,0 +1,140 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixDownload" %> +<%@ page import="java.io.*" %> + +<% +String saveDir = delimiterReplace(request.getRealPath(request.getServletPath())); +String filePath = saveDir.substring(0, saveDir.lastIndexOf("/") + 1); + +/* + filePath + 파일이 저장된 스토리지 전체경로 + 디렉토리 구분은 윈도우, 유닉스 모두 "/" 문자 사용 + 윈도우 - C:/storage/path1/path2/data + 유닉스 - /storage/path1/path2/data +*/ + +// downloadType : "stream" 설정시 자동 전달되는 GET Param 값 +String szStartOffset = request.getParameter("_StartOffset"); +String szEndOffset = request.getParameter("_EndOffset"); + +// 파일 스트림 데이터 참조용 GET Param 값, 파라메터 명은 자유 형식 +String fileID = request.getParameter("fileID"); +String fileName = request.getParameter("fileName"); +String sysFileName = new String(); +String orgFileName = new String(); + +if (fileID != null) { + if (fileID.equals("1")) { + sysFileName = "sample-file.pdf"; // 시스템 저장 파일명 + orgFileName = "INNORIX WP 브로셔.pdf"; // 원본 파일명 + } + + if (fileID.equals("2")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP Brochure.pdf"; + } + + if (fileID.equals("3")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP パンフレット.pdf"; + } +} + +if (fileName != null) { + sysFileName = "data/" + fileName; + orgFileName = "data/" + fileName; +} + +// 파일명 깨짐대응 문자열 인코딩 처리 +orgFileName = java.net.URLEncoder.encode(orgFileName, "UTF-8").replaceAll("\\+", "%20"); + +File file = new File(filePath + sysFileName); + +response.setContentType("application/octet-stream"); +response.setHeader("Accept-Ranges", "bytes"); +response.setHeader("Content-Disposition", "attachment; filename=\"" + orgFileName +"\""); + +long startOffset = 0; +long endOffset = 0; + +if (szStartOffset != null) { + startOffset = Long.parseLong(szStartOffset); +} + +if (szEndOffset != null) { + endOffset = Long.parseLong(szEndOffset); +} + +long contentLength = 0; + +if(szStartOffset != null || szEndOffset != null) { // 컨트롤 다운로드 요청시 + contentLength = endOffset - startOffset + 1; +} else { // html 일반 다운로드 요청시 + contentLength = file.length(); +} + +response.setHeader("Content-Length", "" + contentLength); + +byte b[] = new byte[8192]; +BufferedInputStream input = null; +BufferedOutputStream output = null; + +try { + input = new BufferedInputStream(new FileInputStream(file)); + output = new BufferedOutputStream(response.getOutputStream()); + + int read = 0; + + if (startOffset != 0) { + long n = input.skip(startOffset); + if (n == -1) read = -1; + } + + if(contentLength > 0) { + while (contentLength > 0) { + if(contentLength < 8192) { + b = new byte[(int)contentLength]; + } + + read = input.read(b); + + if(read == -1) { + break; + } + + output.write(b, 0, read); + contentLength = contentLength - read; + } + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("fileID \t: " + fileID); + System.out.println("sysFilePath \t: " + filePath + sysFileName); + System.out.println("orgFileName \t: " + java.net.URLDecoder.decode(orgFileName, "UTF-8")); + System.out.println("totalLength \t: " + file.length() ); + System.out.println("startOffset \t: " + startOffset); + System.out.println("endOffset \t: " + endOffset); +} catch(Exception e) { + e.printStackTrace(); +} finally { + if(output != null) { + output.flush(); + output.close(); + } + + if(input != null) { + input.close(); + } +} +%> + +<%! +private String delimiterReplace(String fullDir) +{ + String ret1 = fullDir.replaceAll("\\\\+", "/"); + String ret2 = ret1.replaceAll("\\/+", "/"); + + return ret2; +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/downloadCustomTable.html b/src/main/webapp/innorix/exam/downloadCustomTable.html new file mode 100644 index 00000000..b7879e8a --- /dev/null +++ b/src/main/webapp/innorix/exam/downloadCustomTable.html @@ -0,0 +1,121 @@ + + + + + + + + + + + ← 예제 목록

+ + + + + + + + + + + + + +
filePathfileSizefileType파일명용량구분
+ +
+ + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/downloadMulti.html b/src/main/webapp/innorix/exam/downloadMulti.html new file mode 100644 index 00000000..d340f828 --- /dev/null +++ b/src/main/webapp/innorix/exam/downloadMulti.html @@ -0,0 +1,61 @@ + + + + + + + + + ← 예제 목록

+ +

+ + +

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/dropZone.html b/src/main/webapp/innorix/exam/dropZone.html new file mode 100644 index 00000000..383febfa --- /dev/null +++ b/src/main/webapp/innorix/exam/dropZone.html @@ -0,0 +1,49 @@ + + + + + + + + + ← 예제 목록

+ + + +
Drop files and folders here


+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/edit.html b/src/main/webapp/innorix/exam/edit.html new file mode 100644 index 00000000..d1918c20 --- /dev/null +++ b/src/main/webapp/innorix/exam/edit.html @@ -0,0 +1 @@ + ← 예제 목록


| |

\ No newline at end of file diff --git a/src/main/webapp/innorix/exam/html5Combine.html b/src/main/webapp/innorix/exam/html5Combine.html new file mode 100644 index 00000000..377b9e6b --- /dev/null +++ b/src/main/webapp/innorix/exam/html5Combine.html @@ -0,0 +1 @@ + ← 예제 목록


| \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/html5Download.html b/src/main/webapp/innorix/exam/html5Download.html new file mode 100644 index 00000000..e1ff0c3b --- /dev/null +++ b/src/main/webapp/innorix/exam/html5Download.html @@ -0,0 +1,47 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/html5Upload.html b/src/main/webapp/innorix/exam/html5Upload.html new file mode 100644 index 00000000..8f91619c --- /dev/null +++ b/src/main/webapp/innorix/exam/html5Upload.html @@ -0,0 +1,37 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + diff --git a/src/main/webapp/innorix/exam/index.html b/src/main/webapp/innorix/exam/index.html new file mode 100644 index 00000000..576ac109 --- /dev/null +++ b/src/main/webapp/innorix/exam/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/installCheck.html b/src/main/webapp/innorix/exam/installCheck.html new file mode 100644 index 00000000..a23acdc9 --- /dev/null +++ b/src/main/webapp/innorix/exam/installCheck.html @@ -0,0 +1,78 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/postParam.html b/src/main/webapp/innorix/exam/postParam.html new file mode 100644 index 00000000..5672a17b --- /dev/null +++ b/src/main/webapp/innorix/exam/postParam.html @@ -0,0 +1,53 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/result.jsp b/src/main/webapp/innorix/exam/result.jsp new file mode 100644 index 00000000..cb2d161d --- /dev/null +++ b/src/main/webapp/innorix/exam/result.jsp @@ -0,0 +1,18 @@ +← 예제 목록

+ +<% +request.setCharacterEncoding("UTF-8"); +java.util.Enumeration names = request.getParameterNames(); + +while (names.hasMoreElements()) { + String name = (String)names.nextElement(); + String values[] = request.getParameterValues(name); + + if (values != null) { + for (int i=0; i< values.length; i++) { + System.out.println ( i + ". " + name + " = " + values[i]); + out.println ( i + ". " + name + " = " + values[i] + "
"); + } + } +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/retrySet.html b/src/main/webapp/innorix/exam/retrySet.html new file mode 100644 index 00000000..087714d9 --- /dev/null +++ b/src/main/webapp/innorix/exam/retrySet.html @@ -0,0 +1,40 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/sample-file.pdf b/src/main/webapp/innorix/exam/sample-file.pdf new file mode 100644 index 00000000..fe199e0f Binary files /dev/null and b/src/main/webapp/innorix/exam/sample-file.pdf differ diff --git a/src/main/webapp/innorix/exam/upload.html b/src/main/webapp/innorix/exam/upload.html new file mode 100644 index 00000000..74dfaffc --- /dev/null +++ b/src/main/webapp/innorix/exam/upload.html @@ -0,0 +1,51 @@ + + + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/upload.jsp b/src/main/webapp/innorix/exam/upload.jsp new file mode 100644 index 00000000..c6955bd8 --- /dev/null +++ b/src/main/webapp/innorix/exam/upload.jsp @@ -0,0 +1,67 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if (request.getMethod().equals("POST")) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + String _type = uploader.getParameter("type"); // 커스텀 정의 POST Param 1 + String _part = uploader.getParameter("part"); // 커스텀 정의 POST Param 2 + String _transferId = uploader.getParameter("_transferId"); // TransferId + String _run_retval = uploader.run(); + + // 개별파일 업로드 완료 + if (uploader.isUploadDone()) { + /* + System.out.println("========== uploader.isUploadDone() " + System.currentTimeMillis() + " =========="); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + */ + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("_action \t = " + _action); + System.out.println("_run_retval \t = " + _run_retval); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_start_offset \t = " + _start_offset); + System.out.println("_end_offset \t = " + _end_offset); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + System.out.println("_type \t = " + _type); + System.out.println("_part \t = " + _part); +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/uploadCustomTable.html b/src/main/webapp/innorix/exam/uploadCustomTable.html new file mode 100644 index 00000000..d94ac52a --- /dev/null +++ b/src/main/webapp/innorix/exam/uploadCustomTable.html @@ -0,0 +1,164 @@ + + + + + + + + + + + ← 예제 목록

+
+ + + + + + + + + + + + + +
filePathfileSizefileType파일명용량구분삭제
+
+ +
+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/uploadMulti.html b/src/main/webapp/innorix/exam/uploadMulti.html new file mode 100644 index 00000000..c3b57c89 --- /dev/null +++ b/src/main/webapp/innorix/exam/uploadMulti.html @@ -0,0 +1,84 @@ + + + + + + + + + ← 예제 목록

+

+ + +

+ +

+ + +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/upload_test_220916.html b/src/main/webapp/innorix/exam/upload_test_220916.html new file mode 100644 index 00000000..5f42868a --- /dev/null +++ b/src/main/webapp/innorix/exam/upload_test_220916.html @@ -0,0 +1,52 @@ + + + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/exam/upload_test_220916.jsp b/src/main/webapp/innorix/exam/upload_test_220916.jsp new file mode 100644 index 00000000..c6955bd8 --- /dev/null +++ b/src/main/webapp/innorix/exam/upload_test_220916.jsp @@ -0,0 +1,67 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if (request.getMethod().equals("POST")) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + String _type = uploader.getParameter("type"); // 커스텀 정의 POST Param 1 + String _part = uploader.getParameter("part"); // 커스텀 정의 POST Param 2 + String _transferId = uploader.getParameter("_transferId"); // TransferId + String _run_retval = uploader.run(); + + // 개별파일 업로드 완료 + if (uploader.isUploadDone()) { + /* + System.out.println("========== uploader.isUploadDone() " + System.currentTimeMillis() + " =========="); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + */ + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("_action \t = " + _action); + System.out.println("_run_retval \t = " + _run_retval); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_start_offset \t = " + _start_offset); + System.out.println("_end_offset \t = " + _end_offset); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + System.out.println("_type \t = " + _type); + System.out.println("_part \t = " + _part); +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnIndex.html b/src/main/webapp/innorix/gnIndex.html new file mode 100644 index 00000000..9a0ff3f2 --- /dev/null +++ b/src/main/webapp/innorix/gnIndex.html @@ -0,0 +1,397 @@ + + + + + + + + GNIT 이노릭스 샘플 목록 + + + + + + + +
+
+
+ + + + + + + + + + + + +

이노릭스는 사용하고 계시는 모드별로 제공되는 기능이 다릅니다. 샘플 비고란을 참고해주세요.

+
+

Agent 모드

+ 사용자 PC에 exe파일로 설치되며, 제공되는 기능이 더 많습니다. (agent : true) +
+
+
+

Html5 모드

+ 무설치형으로 파일전송을 이용하며, 제약되는 기능이 있습니다. (agent : false) +
+
+
+ +

이노릭스제공 기본예제로 이동

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No기능설명샘플비고
+

커스텀 포스트데이터 전송(클라이언트→서버)

+ 클라이언트메소트 setPostData, setFilePostDataByIndex를 이용한 포스트 데이터 전송 +
샘플보기 + + +
+

업로드 시 커스텀 벨류 전송(서버→클라이언트)

+ 서버메소드 setCustomValue를 이용한 커스텀 벨류 전송 +
샘플보기 + + +
+

업로드 시 커스텀 에러 전송(서버→클라이언트)

+ InnorixCustomError 커스텀 에러 전송 +
샘플보기 + +
+

업로드 시 서버 저장경로 변경

+ 서버메소드 setDirectory를 이용한 서버 저장경로 지정 +
샘플보기 + + +
+

업로드 시 서버 저장파일명 변경

+ 서버메소드 setFileName를 이용한 저장파일명 변경 +
샘플보기 + + +
+

업로드 서버경로 숨김 처리

+ 서버메소드 setHideServerPathInfo를 이용한 서버경로 숨김 처리 +
샘플보기 + + +
+

업로드 파일 확장자 제한, 그룹화

+ allowExtension, limitExtension 옵션 활용법 +
샘플보기 + + +
+

파일첨부 에러 시 메세지 출력(382이상 버전)

+ addFileError이벤트를 이용한 에러 메세지 출력 +
샘플보기 + + +
+

파일첨부 에러 시 메세지 출력(373이하 버전)

+ addFileError이벤트를 이용한 에러 메세지 출력 +
샘플보기 + + +
+

다운로드 시 커스텀 에러 전송(서버→클라이언트)

+ downloadCustomError 에러코드, 에러메시지 설정 +
샘플보기 + +
+

다운로드 이중 무결성

+ 다운로드 간 파일 해시 값을 이용한 이중 무결성 체크 예제 +
샘플보기 + +
+

다운로드 요청 간격 설정

+ downloadDelay옵션이용 ms단위 다운로드 딜레이 설정 +
샘플보기 + + +
+

압축(.zip)하여 파일 다운로드

+ 파일 다운로드 시 파일을 압축하여 다운로드 +
샘플보기 + + +
+

설정된 드랍존 영역을 확인하는 방법

+ isDebugDropZone옵션을 활용한 드랍존 영역 표시 +
샘플보기 + +
+

출력 언어 설정(한글/영어)

+ 영어 메시지를 기본으로 출력하며 설정을 한글로 변경 +
샘플보기 + + +
+

에이전트 설치 시 팝업창으로 출력

+ installPopupWindow옵션활용 설치페이지 팝업창으로 출력 +
샘플보기 + +
+

삭제한 파일정보를 서버에 출력

+ 파일추가 후 업로드 전 삭제된 파일에대한 정보출력 +
샘플보기 + + +
+

전송 조각 사이즈변경, 세션 개수 설정

+ 기본 조각 사이즈 2MB, 세션 16개가 적용 +
샘플보기 + + +
+

오류 시 전송 시도 횟수

+ retryCount, retryDelay, maximumErrorCount 옵션활용 +
샘플보기 + +
+

다운로드목록 구성 시 파일사이즈를 가상의사이즈로 지정 (Agent 모드)

+ isTempFileSize 옵션을 활용한 가상파일 사이즈 선언 +
샘플보기 + +
+

다운로드목록 구성 시 파일사이즈를 가상의사이즈로 지정 (Html5 모드)

+ skipFileSizeCheck 옵션을 활용한 파일 사이즈 체크 건너 뜀용 +
샘플보기 + +
+

폴더구조 업로드, 다운로드

+ folderIntact, showFolderItems 옵션활용 +
샘플보기 + +
+

리스트 전송창 모드에서 파일별 전송상태 출력

+ showTransferFileStatus 옵션활용 +
샘플보기 + +
+

파일 아이템 이동, 삭제 기능버튼 출력

+ useFuncBtn 옵션활용 +
샘플보기 + + +
+
+ + + +
+
+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/agentImageUpload.html b/src/main/webapp/innorix/gnexam/agentImageUpload.html new file mode 100644 index 00000000..57440b36 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/agentImageUpload.html @@ -0,0 +1,89 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/changeFileName.html b/src/main/webapp/innorix/gnexam/changeFileName.html new file mode 100644 index 00000000..83251991 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/changeFileName.html @@ -0,0 +1,55 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/changeFileName.jsp b/src/main/webapp/innorix/gnexam/changeFileName.jsp new file mode 100644 index 00000000..0f21170e --- /dev/null +++ b/src/main/webapp/innorix/gnexam/changeFileName.jsp @@ -0,0 +1,69 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> +<%@ page import="java.util.UUID" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if ("POST".equals(request.getMethod())) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + String _type = uploader.getParameter("type"); // 커스텀 정의 POST Param 1 + String _part = uploader.getParameter("part"); // 커스텀 정의 POST Param 2 + String _transferId = uploader.getParameter("_transferId"); // TransferId + + + // 파일정보 확인 + if("getFileInfo".equals(_action)) { + /* + 업로드 시 서버에 저장되는 파일 명 변경 (해당 예제는 랜덥값으로 서버에 저장되는 파일명을 설정) + - uploader.setFileName(파일명+확장자); + - 확장자 변경 시 파일은 열리지 않게 됩니다. + - upload.run()전에 위치 + */ + String saveNm = UUID.randomUUID()+".jpg"; + uploader.setFileName(saveNm); + } + + String _run_retval = uploader.run(); + + // 개별파일 업로드 완료 + if("attachFileCompleted".equals(_action)) { + /* + System.out.println("========== uploader.isUploadDone() " + System.currentTimeMillis() + " =========="); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_filepath \t = " + _filepath); + */ + } + +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/combine.html b/src/main/webapp/innorix/gnexam/combine.html new file mode 100644 index 00000000..d4b43245 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/combine.html @@ -0,0 +1 @@ + ← 예제 목록


| \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/combineTest.html b/src/main/webapp/innorix/gnexam/combineTest.html new file mode 100644 index 00000000..58b197b0 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/combineTest.html @@ -0,0 +1 @@ + ← 예제 목록


\ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/css/gnit.css b/src/main/webapp/innorix/gnexam/css/gnit.css new file mode 100644 index 00000000..86df683d --- /dev/null +++ b/src/main/webapp/innorix/gnexam/css/gnit.css @@ -0,0 +1,88 @@ +@charset "utf-8"; +/* RESET CSS */ +html, body, div, span, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, address, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, dl, dt, dd, menu, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +main, menu, nav, output, ruby, section, summary{font-family: 'NanumBarunGothic',sans-serif !important;margin: 0;padding: 0;border: 0;font: inherit;vertical-align: baseline;} +article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section {display: block;} +body {line-height: 1;} +menu, ol, ul, li {list-style: none;} +table {border-collapse: collapse;border-spacing: 0;} +a {color: #333;text-decoration: none;cursor: pointer;font-size:inherit;} +em {color: #73b644; font-weight: bold;} +i {font-style: italic;display: inline;} + +.clear {clear: both;display: block;height: 0;overflow: hidden;visibility: hidden;width: 0;} + + +/* GNIT SAMPLE CSS */ +html, body{min-width: 900px;} +#header{width: 100%; height: 70px; background-color: #73b644; border-bottom: 2px solid #539426; box-sizing: border-box; text-align: center;} +#header img{display: inline-block; height: 40px; padding:15px 20px; vertical-align: middle;} +#header h1{display: inline-block; font-size: 22px; color: #fff; font-weight: bold;} + +#footer{width: 100%; height: 70px; background-color: #eff4e5; box-sizing: border-box; padding: 45px 0; border-top: 1px solid #539426;} +#footer p{color: #333; text-align: center;} +#footer .top_btn{ + display: block; width: 50px; height: 50px; + background:url('../img/top_btn.jpg') 0 0 no-repeat; text-indent: -99999px; + position: fixed; bottom: 40px; right: 0; +} + +.section{width: 100%; height: auto; background-color: #fdfdfd;} +.section .cont-wrap{width: 100%; padding: 40px; box-sizing: border-box; max-width: 1300px; margin:0 auto;} + +.notice-tb{width: 100%; table-layout: fixed;} +.notice-tb th, .notice-tb td{padding: 15px 30px;} +.notice-wrap{padding-bottom: 20px; box-sizing: border-box;} +.notice-txt p{font-size: 18px; color:#2b3a58;} +.notice-txt p::before{ + content: ""; display: inline-block; width: 60px; height: 50px; + vertical-align: middle; background: url(../img/notice.png) no-repeat; background-size: contain; +} +.notice{padding-bottom: 20px; } +.notice p{padding-bottom: 8px; font-size: 16px; font-weight: bold;} +.notice img{width: 24px; vertical-align: text-bottom; padding-right: 5px;} +.notice span{font-size: 15px; display: block; padding: 5px;} +.notice span::before{content: "-"; display: inline-block; width: 14px;} +.notice-a p{color: #005DA6;} +.notice-h p{color: #fb843f;} + +.notice-pdf img{width: 20px; padding: 0 10px 0 2px;} +.notice-pdf p{color: #444;} +.notice-pdf a:hover{text-decoration: underline; color: #0f6fb9;} + +.origin-exam{font-size: 14px; color: #666; text-align: right;} +.origin-exam a:hover{text-decoration: underline; color: #0f6fb9;} + +/* (공통)목록 table */ +.list-tb{counter-reset: tr 0;} +.list-tb tr td:first-child::before{counter-increment: tr 1; content:counter(tr) '';} +.list-tb{width: 100%; table-layout: fixed; border-top: 2px solid #539426; margin: 20px 0 50px; font-size: 15px;} +.list-tb th, .list-tb td{border-right: 1px solid #cecece; text-align: center; padding:12px 18px; line-height: 24px; vertical-align:middle; background-color: #fff; word-break:break-all;} +.list-tb th:last-child, .list-tb td:last-child{border:none;} +.list-tb th{background-color: #eff4e5; font-size: 16px; color: #333; font-weight: bold;} +.list-tb td.ta_l{text-align: left;} +.list-tb td.ta_r{text-align: right;} +.list-tb td p{font-size: 16px;} +.list-tb td > img{width: 24px; padding: 0 5px; vertical-align: middle;} +.list-tb td a:hover{ text-decoration:underline;} +.list-tb tr{border-bottom: 1px solid #cecece;} +.list-tb tr:last-child{border-bottom: 2px solid #2b3a58;} + +.refer{color: #999; font-size: 14px;} + +.exam-link{border-radius: 5px; } +.exam-link::before{content: ""; display: inline-block; width: 22px; height: 18px; +vertical-align: middle; background: url(../img/code.png) no-repeat; background-size: contain;} +.exam-link:hover{color: #0f6fb9;} + + + + diff --git a/src/main/webapp/innorix/gnexam/dbClickDownloadAndOpen.html b/src/main/webapp/innorix/gnexam/dbClickDownloadAndOpen.html new file mode 100644 index 00000000..4182d0da --- /dev/null +++ b/src/main/webapp/innorix/gnexam/dbClickDownloadAndOpen.html @@ -0,0 +1 @@ + ← 예제 목록


\ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/debugDropZone.html b/src/main/webapp/innorix/gnexam/debugDropZone.html new file mode 100644 index 00000000..bf34f5e5 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/debugDropZone.html @@ -0,0 +1,57 @@ + + + + + + + + + ← 예제 목록

+

설정된 드랍존 영역을 확인하는 방법 - 파일을 드래그하여 드랍존 영역을 확인할 수 있습니다.

+ +

+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/deleteFileInfo.html b/src/main/webapp/innorix/gnexam/deleteFileInfo.html new file mode 100644 index 00000000..6608f6bc --- /dev/null +++ b/src/main/webapp/innorix/gnexam/deleteFileInfo.html @@ -0,0 +1,71 @@ + + + + + + + + + + ← 예제 목록

+

삭제한 파일정보를 서버에 출력 - 삭제한 파일정보를 확인할 수 있습니다. 선택삭제 후 업로드를 진행해주세요.

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/deleteServer.jsp b/src/main/webapp/innorix/gnexam/deleteServer.jsp new file mode 100644 index 00000000..52c118ba --- /dev/null +++ b/src/main/webapp/innorix/gnexam/deleteServer.jsp @@ -0,0 +1,19 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> +<%@page import="java.io.File" %> +<% +request.setCharacterEncoding("UTF-8"); +String[] strDeletedID = request.getParameterValues("_innorix_deleted_id"); // 삭제된 파일ID +String[] strDeletedName = request.getParameterValues("_innorix_deleted_name"); // 삭제된 파일이름 +String[] strDeletedSize = request.getParameterValues("_innorix_deleted_size"); // 삭제된 파일용량 +for(int i=0; i"); + out.println("삭제된 " + i + "번째 name= " + strDeletedName[i] + "
"); + out.println("삭제된 " + i + "번째 size= " + strDeletedSize[i] + "
"); +} +%> +← 예제 목록

\ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/download.html b/src/main/webapp/innorix/gnexam/download.html new file mode 100644 index 00000000..b7e6e40a --- /dev/null +++ b/src/main/webapp/innorix/gnexam/download.html @@ -0,0 +1,88 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/download.jsp b/src/main/webapp/innorix/gnexam/download.jsp new file mode 100644 index 00000000..f0f3fa33 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/download.jsp @@ -0,0 +1,143 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixDownload" %> +<%@ page import="java.io.*" %> + +<% +out.clear(); +out = pageContext.pushBody(); + +String saveDir = delimiterReplace(request.getRealPath(request.getServletPath())); +String filePath = saveDir.substring(0, saveDir.lastIndexOf("/") + 1); + +/* + filePath + 파일이 저장된 스토리지 전체경로 + 디렉토리 구분은 윈도우, 유닉스 모두 "/" 문자 사용 + 윈도우 - C:/storage/path1/path2/data + 유닉스 - /storage/path1/path2/data +*/ + +// downloadType : "stream" 설정시 자동 전달되는 GET Param 값 +String szStartOffset = request.getParameter("_StartOffset"); +String szEndOffset = request.getParameter("_EndOffset"); + +// 파일 스트림 데이터 참조용 GET Param 값, 파라메터 명은 자유 형식 +String fileID = request.getParameter("fileID"); +String fileName = request.getParameter("fileName"); +String sysFileName = new String(); +String orgFileName = new String(); + +if (fileID != null) { + if (fileID.equals("1")) { + sysFileName = "sample-file.pdf"; // 시스템 저장 파일명 + orgFileName = "INNORIX WP 브로셔.pdf"; // 원본 파일명 + } + + if (fileID.equals("2")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP Brochure.pdf"; + } + + if (fileID.equals("3")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP パンフレット.pdf"; + } +} + +if (fileName != null) { + sysFileName = "data/" + fileName; + orgFileName = fileName; +} + +// 파일명 깨짐대응 문자열 인코딩 처리 +orgFileName = java.net.URLEncoder.encode(orgFileName, "UTF-8").replaceAll("\\+", "%20"); + +File file = new File(filePath + sysFileName); + +response.setContentType("application/octet-stream"); +response.setHeader("Accept-Ranges", "bytes"); +response.setHeader("Content-Disposition", "attachment; filename=\"" + orgFileName +"\""); + +long startOffset = 0; +long endOffset = 0; + +if (szStartOffset != null) { + startOffset = Long.parseLong(szStartOffset); +} + +if (szEndOffset != null) { + endOffset = Long.parseLong(szEndOffset); +} + +long contentLength = 0; + +if(szStartOffset != null || szEndOffset != null) { // 컨트롤 다운로드 요청시 + contentLength = endOffset - startOffset + 1; +} else { // html 일반 다운로드 요청시 + contentLength = file.length(); +} + +response.setHeader("Content-Length", "" + contentLength); + +byte b[] = new byte[8192]; +BufferedInputStream input = null; +BufferedOutputStream output = null; + +try { + input = new BufferedInputStream(new FileInputStream(file)); + output = new BufferedOutputStream(response.getOutputStream()); + + int read = 0; + + if (startOffset != 0) { + long n = input.skip(startOffset); + if (n == -1) read = -1; + } + + if(contentLength > 0) { + while (contentLength > 0) { + if(contentLength < 8192) { + b = new byte[(int)contentLength]; + } + + read = input.read(b); + + if(read == -1) { + break; + } + + output.write(b, 0, read); + contentLength = contentLength - read; + } + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("fileID \t: " + fileID); + System.out.println("sysFilePath \t: " + filePath + sysFileName); + System.out.println("orgFileName \t: " + java.net.URLDecoder.decode(orgFileName, "UTF-8")); + System.out.println("totalLength \t: " + file.length() ); + System.out.println("startOffset \t: " + startOffset); + System.out.println("endOffset \t: " + endOffset); +} catch(Exception e) { + e.printStackTrace(); +} finally { + if(output != null) { + output.flush(); + output.close(); + } + + if(input != null) { + input.close(); + } +} +%> + +<%! +private String delimiterReplace(String fullDir) +{ + String ret1 = fullDir.replaceAll("\\\\+", "/"); + String ret2 = ret1.replaceAll("\\/+", "/"); + + return ret2; +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/downloadAfterRemoveFileView.jsp b/src/main/webapp/innorix/gnexam/downloadAfterRemoveFileView.jsp new file mode 100644 index 00000000..a776248b --- /dev/null +++ b/src/main/webapp/innorix/gnexam/downloadAfterRemoveFileView.jsp @@ -0,0 +1,76 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + + + + + + + + ← 예제 목록

+ +

+ + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/downloadCustomError.html b/src/main/webapp/innorix/gnexam/downloadCustomError.html new file mode 100644 index 00000000..a57d987f --- /dev/null +++ b/src/main/webapp/innorix/gnexam/downloadCustomError.html @@ -0,0 +1,75 @@ + + + + + + + + + + ← 예제 목록

+

+ + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/downloadCustomError.jsp b/src/main/webapp/innorix/gnexam/downloadCustomError.jsp new file mode 100644 index 00000000..70dfb9dc --- /dev/null +++ b/src/main/webapp/innorix/gnexam/downloadCustomError.jsp @@ -0,0 +1,156 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%-- <%@ page import="com.innorix.transfer.InnorixCustomError"%> --%> +<%@ page import="com.innorix.transfer.InnorixDownload" %> +<%@ page import="java.io.*" %> + +<% +String saveDir = delimiterReplace(request.getRealPath(request.getServletPath())); +String filePath = saveDir.substring(0, saveDir.lastIndexOf("/") + 1); + +/* + filePath + 파일이 저장된 스토리지 전체경로 + 디렉토리 구분은 윈도우, 유닉스 모두 "/" 문자 사용 + 윈도우 - C:/storage/path1/path2/data + 유닉스 - /storage/path1/path2/data +*/ + +// downloadType : "stream" 설정시 자동 전달되는 GET Param 값 +String szStartOffset = request.getParameter("_StartOffset"); +String szEndOffset = request.getParameter("_EndOffset"); + +// 파일 스트림 데이터 참조용 GET Param 값, 파라메터 명은 자유 형식 +String fileID = request.getParameter("fileID"); +String fileName = request.getParameter("fileName"); +String sysFileName = new String(); +String orgFileName = new String(); + +if (fileID != null) { + if (fileID.equals("1")) { + sysFileName = "sample-file.pdf"; // 시스템 저장 파일명 + orgFileName = "INNORIX WP 브로셔.pdf"; // 원본 파일명 + } + + if (fileID.equals("2")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP Brochure.pdf"; + } + + if (fileID.equals("3")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP パンフレット.pdf"; + } +} + +if (fileName != null) { + sysFileName = "data/" + fileName; + orgFileName = fileName; +} + +// 파일명 깨짐대응 문자열 인코딩 처리 +orgFileName = java.net.URLEncoder.encode(orgFileName, "UTF-8").replaceAll("\\+", "%20"); + +//File file = new File(filePath + sysFileName); +File file = new File("missingFile.txt"); // 예제 구현을 위한 오류 발생 !!! + +response.setContentType("application/octet-stream"); +response.setHeader("Accept-Ranges", "bytes"); +response.setHeader("Content-Disposition", "attachment; filename=\"" + orgFileName +"\""); + +long startOffset = 0; +long endOffset = 0; + +if (szStartOffset != null) { + startOffset = Long.parseLong(szStartOffset); +} + +if (szEndOffset != null) { + endOffset = Long.parseLong(szEndOffset); +} + +long contentLength = 0; + +if(szStartOffset != null || szEndOffset != null) { // 컨트롤 다운로드 요청시 + contentLength = endOffset - startOffset + 1; +} else { // html 일반 다운로드 요청시 + contentLength = file.length(); +} + +// 예제 구현을 위한 오류 발생 !!! +// response.setHeader("Content-Length", "" + contentLength); + +byte b[] = new byte[8192]; +BufferedInputStream input = null; +BufferedOutputStream output = null; + +try { + out.clear(); + out=pageContext.pushBody(); + + input = new BufferedInputStream(new FileInputStream(file)); + output = new BufferedOutputStream(response.getOutputStream()); + + int read = 0; + + if (startOffset != 0) { + long n = input.skip(startOffset); + if (n == -1) read = -1; + } + + if(contentLength > 0) { + while (contentLength > 0) { + if(contentLength < 8192) { + b = new byte[(int)contentLength]; + } + + read = input.read(b); + + if(read == -1) { + break; + } + + output.write(b, 0, read); + contentLength = contentLength - read; + } + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("fileID \t: " + fileID); + System.out.println("sysFilePath \t: " + filePath + sysFileName); + System.out.println("orgFileName \t: " + java.net.URLDecoder.decode(orgFileName, "UTF-8")); + System.out.println("totalLength \t: " + file.length() ); + System.out.println("startOffset \t: " + startOffset); + System.out.println("endOffset \t: " + endOffset); +} catch(Exception e) { + + e.printStackTrace(); + /* + downloadCustomError + 에러코드, 에러메시지 설정 + 서버에서 예외상황 발생 시 response에 2000번대 이상의 커스텀 코드와 에러 메시지를 write 해줍니다. + */ + response.setStatus(2000); //2000번대 이상 커스텀 에러 코드 + response.getWriter().write("에러메시지 입니다"); // 에러메시지 + response.getWriter().flush(); + response.getWriter().close(); +} finally { + if(output != null) { + output.flush(); + output.close(); + } + + if(input != null) { + input.close(); + } +} +%> + +<%! +private String delimiterReplace(String fullDir) +{ + String ret1 = fullDir.replaceAll("\\\\+", "/"); + String ret2 = ret1.replaceAll("\\/+", "/"); + + return ret2; +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/downloadDelay.html b/src/main/webapp/innorix/gnexam/downloadDelay.html new file mode 100644 index 00000000..9212f9a8 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/downloadDelay.html @@ -0,0 +1,55 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/downloadDeleteSession.jsp b/src/main/webapp/innorix/gnexam/downloadDeleteSession.jsp new file mode 100644 index 00000000..9776b5c1 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/downloadDeleteSession.jsp @@ -0,0 +1,172 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@page import="com.innorix.transfer.InnorixCustomValue"%> +<%@ page import="com.innorix.transfer.InnorixTransfer" %> +<%@ page import="com.innorix.transfer.InnorixDownload" %> +<%@ page import="org.json.JSONArray" %> +<%@ page import="org.json.JSONObject" %> +<%@ page import="java.io.*" %> + +<% +request.setCharacterEncoding("utf-8"); + +String saveDir = delimiterReplace(request.getRealPath(request.getServletPath())); +String filePath = saveDir.substring(0, saveDir.lastIndexOf("/") + 1); +/* + filePath + 파일이 저장된 스토리지 전체경로 + 디렉토리 구분은 윈도우, 유닉스 모두 "/" 문자 사용 + 윈도우 - C:/storage/path1/path2/data + 유닉스 - /storage/path1/path2/data +*/ + +// downloadType : "stream" 설정시 자동 전달되는 GET Param 값 +String szStartOffset = request.getParameter("_StartOffset"); +String szEndOffset = request.getParameter("_EndOffset"); + +// 파일 스트림 데이터 참조용 GET Param 값, 파라메터 명은 자유 형식 +String getuniqueId = request.getParameter("uniqueId"); //유니크 아이디 +String fileName = request.getParameter("fileName"); + +String html5 = request.getParameter("_Html5"); + +String sysFileName = new String(); +String orgFileName = new String(); + +String fileFullPath = (String)session.getAttribute(getuniqueId); //파일 절대 경로 취득 +session.setAttribute(getuniqueId, fileFullPath); + +if (fileName != null) { + orgFileName = fileName; +} + +File file = null; + +if (fileFullPath != null){ + file = new File(fileFullPath); +} + +// 파일명 깨짐대응 문자열 인코딩 처리 +orgFileName = java.net.URLEncoder.encode(orgFileName, "UTF-8").replaceAll("\\+", "%20"); + +response.setContentType("application/octet-stream"); +response.setHeader("Accept-Ranges", "bytes"); +response.setHeader("Content-Disposition", "attachment; filename=\"" + orgFileName +"\""); + +long startOffset = 0; +long endOffset = 0; + +if (szStartOffset != null) { + startOffset = Long.parseLong(szStartOffset); +} + +if (szEndOffset != null) { + endOffset = Long.parseLong(szEndOffset); +} + +long contentLength = 0; + +if(szStartOffset != null || szEndOffset != null) { // 컨트롤 다운로드 요청시 + contentLength = endOffset - startOffset + 1; +} else { // html 일반 다운로드 요청시 + contentLength = file.length(); +} + +response.setHeader("Content-Length", "" + contentLength); + +byte b[] = new byte[8192]; +BufferedInputStream input = null; +BufferedOutputStream output = null; +try { + out.clear(); + out=pageContext.pushBody(); + input = new BufferedInputStream(new FileInputStream(file)); + output = new BufferedOutputStream(response.getOutputStream()); + + int read = 0; + + if (startOffset != 0) { + long n = input.skip(startOffset); + if (n == -1) read = -1; + } + + if(contentLength > 0) { + while (contentLength > 0) { + if(contentLength < 8192) { + b = new byte[(int)contentLength]; + } + + read = input.read(b); + + if(read == -1) { + break; + } + + output.write(b, 0, read); + contentLength = contentLength - read; + } + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("uniqueId \t: " + getuniqueId); + System.out.println("sysFilePath \t: " + filePath + sysFileName); + System.out.println("orgFileName \t: " + java.net.URLDecoder.decode(orgFileName, "UTF-8")); + System.out.println("totalLength \t: " + file.length() ); + System.out.println("startOffset \t: " + startOffset); + System.out.println("endOffset \t: " + endOffset); + System.out.println("_Html5 \t : " + html5); +} catch(Exception e) { + e.printStackTrace(); +} finally { + if(output != null) { + + output.flush(); + output.close(); + } + + if(input != null) { + input.close(); + } + + if("true".equals(html5)){ //html5 모드 일때 + session.removeAttribute(getuniqueId); //세션 삭제 + File f = new File(fileFullPath); //파일 경로 + System.out.println(f); + if(f.exists()){ + if(f.delete()){ + System.out.println("파일삭제 성공"); + + }else{ + System.out.println("파일삭제 실패"); + } + }else{ + System.out.println("파일 없음"); + } + + }else{ //Agent 모드 일때 + session.removeAttribute(getuniqueId); + File f = new File(fileFullPath); + System.out.println(f); + if(f.exists()){ + if(f.delete()){ + System.out.println("파일삭제 성공"); + }else{ + System.out.println("파일삭제 실패"); + } + }else{ + System.out.println("파일 없음"); + } + } +} + + +%> + +<%! +private String delimiterReplace(String fullDir) +{ + String ret1 = fullDir.replaceAll("\\\\+", "/"); + String ret2 = ret1.replaceAll("\\/+", "/"); + + return ret2; +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/downloadIntegrity.html b/src/main/webapp/innorix/gnexam/downloadIntegrity.html new file mode 100644 index 00000000..33dcfad8 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/downloadIntegrity.html @@ -0,0 +1,54 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/downloadIntegrity.jsp b/src/main/webapp/innorix/gnexam/downloadIntegrity.jsp new file mode 100644 index 00000000..ef55c0a1 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/downloadIntegrity.jsp @@ -0,0 +1,173 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixDownload" %> +<%-- 1. Integrity 패키지 추가 --%> +<%@ page import="com.innorix.integrity.Integrity" %> +<%@ page import="java.io.*" %> + +<% +String saveDir = delimiterReplace(request.getRealPath(request.getServletPath())); +String filePath = saveDir.substring(0, saveDir.lastIndexOf("/") + 1); + +/* + filePath + 파일이 저장된 스토리지 전체경로 + 디렉토리 구분은 윈도우, 유닉스 모두 "/" 문자 사용 + 윈도우 - C:/storage/path1/path2/data + 유닉스 - /storage/path1/path2/data +*/ + +// downloadType : "stream" 설정시 자동 전달되는 GET Param 값 +String szStartOffset = request.getParameter("_StartOffset"); +String szEndOffset = request.getParameter("_EndOffset"); + +String szIntegrity = request.getParameter("_Integrity"); // 파라미터를 통해 이중 무결성 여부 확인 + +// 파일 스트림 데이터 참조용 GET Param 값, 파라메터 명은 자유 형식 +String fileID = request.getParameter("fileID"); +String fileName = request.getParameter("fileName"); +String sysFileName = new String(); +String orgFileName = new String(); + +/* + 다운로드 이중 무결성 (※ Agent 모드 전용 옵션) + _Integity 파라미터를 확인해서 이중 무결성 여부 확인 + - 이중 무결성 로직을 추가하지 않았을 경우에 비해 다운로드 속도가 저하됩니다. +*/ +boolean isIntegrity = false; +if (szIntegrity != null && szIntegrity.equalsIgnoreCase("true")) { + isIntegrity = true; +} + + +if (fileID != null) { + if (fileID.equals("1")) { + sysFileName = "sample-file.pdf"; // 시스템 저장 파일명 + orgFileName = "INNORIX WP 브로셔.pdf"; // 원본 파일명 + } + + if (fileID.equals("2")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP Brochure.pdf"; + } + + if (fileID.equals("3")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP パンフレット.pdf"; + } +} + +if (fileName != null) { + sysFileName = "data/" + fileName; + orgFileName = "data/" + fileName; +} + +long startOffset = 0; +long endOffset = 0; + +if (szStartOffset != null) { + startOffset = Long.parseLong(szStartOffset); +} + +if (szEndOffset != null) { + endOffset = Long.parseLong(szEndOffset); +} + +// 응답 데이터 수정 +if (isIntegrity) { + Integrity integrity = new Integrity(); + String md5 = new String(); + try { + // getMD5FromFileSlice() 메소드 리턴 값을 response에 write 해줍니다. + md5 = integrity.getMD5FromFileSlice(filePath + sysFileName, startOffset, endOffset); + } + catch(Exception e) { + } + + response.setStatus(200); + response.getWriter().write(md5); + response.getWriter().flush(); + response.getWriter().close(); + return ; +} + +// 파일명 깨짐대응 문자열 인코딩 처리 +orgFileName = java.net.URLEncoder.encode(orgFileName, "UTF-8").replaceAll("\\+", "%20"); + +File file = new File(filePath + sysFileName); + +response.setContentType("application/octet-stream"); +response.setHeader("Accept-Ranges", "bytes"); +response.setHeader("Content-Disposition", "attachment; filename=\"" + orgFileName +"\""); + +long contentLength = 0; + +if(szStartOffset != null || szEndOffset != null) { // 컨트롤 다운로드 요청시 + contentLength = endOffset - startOffset + 1; +} else { // html 일반 다운로드 요청시 + contentLength = file.length(); +} + +response.setHeader("Content-Length", "" + contentLength); + +byte b[] = new byte[8192]; +BufferedInputStream input = null; +BufferedOutputStream output = null; + +try { + input = new BufferedInputStream(new FileInputStream(file)); + output = new BufferedOutputStream(response.getOutputStream()); + + int read = 0; + + if (startOffset != 0) { + long n = input.skip(startOffset); + if (n == -1) read = -1; + } + + if(contentLength > 0) { + while (contentLength > 0) { + if(contentLength < 8192) { + b = new byte[(int)contentLength]; + } + + read = input.read(b); + + if(read == -1) { + break; + } + + output.write(b, 0, read); + contentLength = contentLength - read; + } + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("fileID \t: " + fileID); + System.out.println("sysFilePath \t: " + filePath + sysFileName); + System.out.println("orgFileName \t: " + java.net.URLDecoder.decode(orgFileName, "UTF-8")); + System.out.println("totalLength \t: " + file.length() ); + System.out.println("startOffset \t: " + startOffset); + System.out.println("endOffset \t: " + endOffset); +} catch(Exception e) { + e.printStackTrace(); +} finally { + if(output != null) { + output.flush(); + output.close(); + } + + if(input != null) { + input.close(); + } +} +%> + +<%! +private String delimiterReplace(String fullDir) +{ + String ret1 = fullDir.replaceAll("\\\\+", "/"); + String ret2 = ret1.replaceAll("\\/+", "/"); + + return ret2; +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/errorRetryCount.html b/src/main/webapp/innorix/gnexam/errorRetryCount.html new file mode 100644 index 00000000..02ab988c --- /dev/null +++ b/src/main/webapp/innorix/gnexam/errorRetryCount.html @@ -0,0 +1,99 @@ + + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/hideServerPathInfo.html b/src/main/webapp/innorix/gnexam/hideServerPathInfo.html new file mode 100644 index 00000000..5802e8ab --- /dev/null +++ b/src/main/webapp/innorix/gnexam/hideServerPathInfo.html @@ -0,0 +1,49 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/hideServerPathInfo.jsp b/src/main/webapp/innorix/gnexam/hideServerPathInfo.jsp new file mode 100644 index 00000000..41f5fdd3 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/hideServerPathInfo.jsp @@ -0,0 +1,71 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> +<%-- File import --%> +<%@page import="java.io.File"%> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if ("POST".equals(request.getMethod())) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + String _type = uploader.getParameter("type"); // 커스텀 정의 POST Param 1 + String _part = uploader.getParameter("part"); // 커스텀 정의 POST Param 2 + String _transferId = uploader.getParameter("_transferId"); // TransferId + + /* + 업로드 간 메타정보 상 노출되는 서버 경로를 숨기기 위한 방법 + ( 업로드 완료 시 클라이언트에 서버에 저장된 파일의 절대 경로가 노출되기 때문에 보안 상 노출이 안 되도록 설정 ) + uploader.setHideServerPathInfo(true); + - uploader.run() 이전에 설정 + - 해당 설정 시 파일 전송 간 발생되는 통신 구간에서는 서버 경로 정보를 주고 받지 않기 위해 + InnorixUplaod 클래스를 객체화 할 때 지정해주는 directory 값을 고정으로 업로드하며, setDirectory와 함께 사용할 수 없음 + */ + + uploader.setHideServerPathInfo(true); //업로드 서버경로 숨김처리 + String _run_retval = uploader.run(); + + // 개별파일 업로드 완료 + if("attachFileCompleted".equals(_action)) { + + System.out.println("========== uploader.isUploadDone() " + System.currentTimeMillis() + " =========="); + System.out.println("_orig_filename \t = " + _orig_filename); // 원본 파일명 + System.out.println("_new_filename \t = " + _new_filename); // 저장 파일명 + + /* 업로드 서버 경로 숨김처리 시 저장경로 확인 방법 */ + System.out.println("_filepath \t = " + _filepath); // 파일 저장경로 (업로드 서버 경로 숨김처리하여 빈값으로 출력) + String strDir = uploader.getDirectory(); // 서버에 저장되는 폴더경로 + System.out.println("strDir \t = " + strDir); + String strSrvFilePath = strDir.concat(File.separator).concat(_new_filename); + System.out.println("strSrvFilePath \t = " + strSrvFilePath); //서버에 저장된 파일 위치 + } + +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/html5ImageUpload.html b/src/main/webapp/innorix/gnexam/html5ImageUpload.html new file mode 100644 index 00000000..e374cadf --- /dev/null +++ b/src/main/webapp/innorix/gnexam/html5ImageUpload.html @@ -0,0 +1,88 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/iframe.html b/src/main/webapp/innorix/gnexam/iframe.html new file mode 100644 index 00000000..b43d8537 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/iframe.html @@ -0,0 +1,15 @@ + + + + + + + +Insert title here + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/img/agent.png b/src/main/webapp/innorix/gnexam/img/agent.png new file mode 100644 index 00000000..ffd33f21 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/agent.png differ diff --git a/src/main/webapp/innorix/gnexam/img/close-blue.png b/src/main/webapp/innorix/gnexam/img/close-blue.png new file mode 100644 index 00000000..442d9ad1 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/close-blue.png differ diff --git a/src/main/webapp/innorix/gnexam/img/code.png b/src/main/webapp/innorix/gnexam/img/code.png new file mode 100644 index 00000000..0c76bd12 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/code.png differ diff --git a/src/main/webapp/innorix/gnexam/img/dropzone.png b/src/main/webapp/innorix/gnexam/img/dropzone.png new file mode 100644 index 00000000..101817b4 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/dropzone.png differ diff --git a/src/main/webapp/innorix/gnexam/img/favicon.ico b/src/main/webapp/innorix/gnexam/img/favicon.ico new file mode 100644 index 00000000..912d8b81 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/favicon.ico differ diff --git a/src/main/webapp/innorix/gnexam/img/gnlogo.png b/src/main/webapp/innorix/gnexam/img/gnlogo.png new file mode 100644 index 00000000..2d1e9eb7 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/gnlogo.png differ diff --git a/src/main/webapp/innorix/gnexam/img/gnlogo_w_png.png b/src/main/webapp/innorix/gnexam/img/gnlogo_w_png.png new file mode 100644 index 00000000..9452e3f0 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/gnlogo_w_png.png differ diff --git a/src/main/webapp/innorix/gnexam/img/html5.png b/src/main/webapp/innorix/gnexam/img/html5.png new file mode 100644 index 00000000..142200ba Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/html5.png differ diff --git a/src/main/webapp/innorix/gnexam/img/innorix_control_list_checkbox.png b/src/main/webapp/innorix/gnexam/img/innorix_control_list_checkbox.png new file mode 100644 index 00000000..bc448708 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/innorix_control_list_checkbox.png differ diff --git a/src/main/webapp/innorix/gnexam/img/move-blue.png b/src/main/webapp/innorix/gnexam/img/move-blue.png new file mode 100644 index 00000000..87a5b20c Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/move-blue.png differ diff --git a/src/main/webapp/innorix/gnexam/img/notice.png b/src/main/webapp/innorix/gnexam/img/notice.png new file mode 100644 index 00000000..d06bdf20 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/notice.png differ diff --git a/src/main/webapp/innorix/gnexam/img/pdf.png b/src/main/webapp/innorix/gnexam/img/pdf.png new file mode 100644 index 00000000..8f8095e4 Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/pdf.png differ diff --git a/src/main/webapp/innorix/gnexam/img/top_btn.jpg b/src/main/webapp/innorix/gnexam/img/top_btn.jpg new file mode 100644 index 00000000..9669e0de Binary files /dev/null and b/src/main/webapp/innorix/gnexam/img/top_btn.jpg differ diff --git a/src/main/webapp/innorix/gnexam/installPopup.html b/src/main/webapp/innorix/gnexam/installPopup.html new file mode 100644 index 00000000..427bc177 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/installPopup.html @@ -0,0 +1,85 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/isTempFileSize.html b/src/main/webapp/innorix/gnexam/isTempFileSize.html new file mode 100644 index 00000000..7aeee43c --- /dev/null +++ b/src/main/webapp/innorix/gnexam/isTempFileSize.html @@ -0,0 +1,67 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/postData.html b/src/main/webapp/innorix/gnexam/postData.html new file mode 100644 index 00000000..cb1b2e27 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/postData.html @@ -0,0 +1,63 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/postData.jsp b/src/main/webapp/innorix/gnexam/postData.jsp new file mode 100644 index 00000000..a8e6104d --- /dev/null +++ b/src/main/webapp/innorix/gnexam/postData.jsp @@ -0,0 +1,56 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if ("POST".equals(request.getMethod())) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + + String fileParam1 = uploader.getParameter("fileParam1"); // 파일 별 커스텀 정의 POST Param 1 + String fileParam2 = uploader.getParameter("fileParam2"); // 파일 별 커스텀 정의 POST Param 2 + String transParam1 = uploader.getParameter("transParam1"); // 전송 별 커스텀 정의 POST Param 3 + String transParam2 = uploader.getParameter("transParam2"); // 전송 별 커스텀 정의 POST Param 4 + + String _run_retval = uploader.run(); + + // 개별파일 업로드 완료 + if("attachFileCompleted".equals(_action)) { + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("_action \t = " + _action); + System.out.println("트랜잭션별 transParam1 : " + transParam1 + ", transParam2 : " + transParam2); + System.out.println("파일별 fileParam1 : " + fileParam1 + ", fileParam2 : " + fileParam2); + } + + + +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/result.jsp b/src/main/webapp/innorix/gnexam/result.jsp new file mode 100644 index 00000000..22d44670 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/result.jsp @@ -0,0 +1,18 @@ +← 예제 목록

+ +<% +request.setCharacterEncoding("UTF-8"); +java.util.Enumeration names = request.getParameterNames(); + +while (names.hasMoreElements()) { + String name = (String)names.nextElement(); + String values[] = request.getParameterValues(name); + + if (values != null) { + for (int i=0; i< values.length; i++) { + System.out.println ( i + ". " + name + " = " + values[i]); + out.println ( i + ". " + name + " = " + values[i] + "
"); + } + } +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/sample-file.pdf b/src/main/webapp/innorix/gnexam/sample-file.pdf new file mode 100644 index 00000000..fe199e0f Binary files /dev/null and b/src/main/webapp/innorix/gnexam/sample-file.pdf differ diff --git a/src/main/webapp/innorix/gnexam/setLanguage.html b/src/main/webapp/innorix/gnexam/setLanguage.html new file mode 100644 index 00000000..9a668b39 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/setLanguage.html @@ -0,0 +1,74 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/showTransferFileStatus.html b/src/main/webapp/innorix/gnexam/showTransferFileStatus.html new file mode 100644 index 00000000..3c304ed6 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/showTransferFileStatus.html @@ -0,0 +1,59 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/skipAgentCheck.html b/src/main/webapp/innorix/gnexam/skipAgentCheck.html new file mode 100644 index 00000000..18ee5362 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/skipAgentCheck.html @@ -0,0 +1,87 @@ + + + + + + + + + ← 예제 목록

+

+ + +

+ +

+ + +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/skipFileSizeCheck.html b/src/main/webapp/innorix/gnexam/skipFileSizeCheck.html new file mode 100644 index 00000000..872683a0 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/skipFileSizeCheck.html @@ -0,0 +1,59 @@ + + + + + + + + + ← 예제 목록

+ +

+ + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/sliceSizeSession.html b/src/main/webapp/innorix/gnexam/sliceSizeSession.html new file mode 100644 index 00000000..aca9711d --- /dev/null +++ b/src/main/webapp/innorix/gnexam/sliceSizeSession.html @@ -0,0 +1,62 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/transferCancel.html b/src/main/webapp/innorix/gnexam/transferCancel.html new file mode 100644 index 00000000..3393fe0a --- /dev/null +++ b/src/main/webapp/innorix/gnexam/transferCancel.html @@ -0,0 +1,54 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/upDownFolder.html b/src/main/webapp/innorix/gnexam/upDownFolder.html new file mode 100644 index 00000000..eec81b00 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/upDownFolder.html @@ -0,0 +1 @@ + ← 예제 목록


| \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/upDownFolder.jsp b/src/main/webapp/innorix/gnexam/upDownFolder.jsp new file mode 100644 index 00000000..e7198067 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/upDownFolder.jsp @@ -0,0 +1,140 @@ +<%@page import="com.innorix.transfer.InnorixCustomError"%> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixDownload" %> +<%@ page import="java.io.*" %> + +<% +out.clear(); +out = pageContext.pushBody(); +String saveDir = delimiterReplace(request.getRealPath(request.getServletPath())); +String filePath = saveDir.substring(0, saveDir.lastIndexOf("/") + 1); + +/* + filePath + 파일이 저장된 스토리지 전체경로 + 디렉토리 구분은 윈도우, 유닉스 모두 "/" 문자 사용 + 윈도우 - C:/storage/path1/path2/data + 유닉스 - /storage/path1/path2/data +*/ + +// downloadType : "stream" 설정시 자동 전달되는 GET Param 값 +String szStartOffset = request.getParameter("_StartOffset"); +String szEndOffset = request.getParameter("_EndOffset"); +// 파일 스트림 데이터 참조용 GET Param 값, 파라메터 명은 자유 형식 +String fileID = request.getParameter("fileID"); +String fileName = request.getParameter("fileName"); +String sysFileName = new String(); +String orgFileName = new String(); +if (fileID != null) { + if (fileID.equals("1")) { + sysFileName = "sample-file.pdf"; // 시스템 저장 파일명 + orgFileName = "INNORIX WP 브로셔.pdf"; // 원본 파일명 + } + + if (fileID.equals("2")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP Brochure.pdf"; + } + + if (fileID.equals("3")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP パンフレット.pdf"; + } +} + +if (fileName != null) { + sysFileName = "data/" + fileName; + orgFileName = "data/" + fileName; +} + +// 파일명 깨짐대응 문자열 인코딩 처리 +orgFileName = java.net.URLEncoder.encode(orgFileName, "UTF-8").replaceAll("\\+", "%20"); + +File file = new File(filePath + sysFileName); +response.setContentType("application/octet-stream"); +response.setHeader("Accept-Ranges", "bytes"); +response.setHeader("Content-Disposition", "attachment; filename=\"" + orgFileName +"\""); + +long startOffset = 0; +long endOffset = 0; + +if (szStartOffset != null) { + startOffset = Long.parseLong(szStartOffset); +} + +if (szEndOffset != null) { + endOffset = Long.parseLong(szEndOffset); +} + +long contentLength = 0; + +if(szStartOffset != null || szEndOffset != null) { // 컨트롤 다운로드 요청시 + contentLength = endOffset - startOffset + 1; +} else { // html 일반 다운로드 요청시 + contentLength = file.length(); +} + +response.setHeader("Content-Length", "" + contentLength); + +byte b[] = new byte[8192]; +BufferedInputStream input = null; +BufferedOutputStream output = null; +try { + input = new BufferedInputStream(new FileInputStream(file)); + output = new BufferedOutputStream(response.getOutputStream()); + + int read = 0; + + if (startOffset != 0) { + long n = input.skip(startOffset); + if (n == -1) read = -1; + } + + if(contentLength > 0) { + while (contentLength > 0) { + if(contentLength < 8192) { + b = new byte[(int)contentLength]; + } + + read = input.read(b); + + if(read == -1) { + break; + } + + output.write(b, 0, read); + contentLength = contentLength - read; + } + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("fileID \t: " + fileID); + System.out.println("fileName \t: " + fileName); + System.out.println("sysFilePath \t: " + filePath + sysFileName); + System.out.println("orgFileName \t: " + java.net.URLDecoder.decode(orgFileName, "UTF-8")); + System.out.println("totalLength \t: " + file.length() ); + System.out.println("startOffset \t: " + startOffset); + System.out.println("endOffset \t: " + endOffset); +} catch(Exception e) { + e.printStackTrace(); +} finally { + if(output != null) { + output.flush(); + output.close(); + } + + if(input != null) { + input.close(); + } +} +%> + +<%! +private String delimiterReplace(String fullDir) +{ + String ret1 = fullDir.replaceAll("\\\\+", "/"); + String ret2 = ret1.replaceAll("\\/+", "/"); + + return ret2; +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/upload.jsp b/src/main/webapp/innorix/gnexam/upload.jsp new file mode 100644 index 00000000..ac5a2bd4 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/upload.jsp @@ -0,0 +1,68 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if ("POST".equals(request.getMethod())) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + String _type = uploader.getParameter("type"); // 커스텀 정의 POST Param 1 + String _part = uploader.getParameter("part"); // 커스텀 정의 POST Param 2 + String _transferId = uploader.getParameter("_transferId"); // TransferId + String _run_retval = uploader.run(); + + // 개별파일 업로드 완료 + if("attachFileCompleted".equals(_action)) { + + System.out.println("========== uploader.isUploadDone() " + System.currentTimeMillis() + " =========="); + System.out.println("_orig_filename \t = " + _orig_filename); + /* + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + */ + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("_action \t = " + _action); + System.out.println("_run_retval \t = " + _run_retval); + /* System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_start_offset \t = " + _start_offset); + System.out.println("_end_offset \t = " + _end_offset); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + System.out.println("_type \t = " + _type); + System.out.println("_part \t = " + _part); */ +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadAddFileError.html b/src/main/webapp/innorix/gnexam/uploadAddFileError.html new file mode 100644 index 00000000..3b4ad83c --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadAddFileError.html @@ -0,0 +1,101 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadAddFileError_old.html b/src/main/webapp/innorix/gnexam/uploadAddFileError_old.html new file mode 100644 index 00000000..c511c7fe --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadAddFileError_old.html @@ -0,0 +1,93 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadCustomError.html b/src/main/webapp/innorix/gnexam/uploadCustomError.html new file mode 100644 index 00000000..25467f88 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadCustomError.html @@ -0,0 +1,75 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadCustomError.jsp b/src/main/webapp/innorix/gnexam/uploadCustomError.jsp new file mode 100644 index 00000000..574d1826 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadCustomError.jsp @@ -0,0 +1,72 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> +<%@ page import="com.innorix.transfer.InnorixCustomError" %> +<%@ page import="java.util.UUID" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if ("POST".equals(request.getMethod())) +{ + try{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + + String _run_retval = uploader.run(); + + /* + getFileInfo 이후 에러발생부터 uploadError이벤트 파라미터에 파일별로 에러메시지가 출력됨 + 커스텀 에러 사용 시 getFileInfo를 사용 권장 + */ + if("getFileInfo".equals(_action)){ + // ※※ 임의의 에러 발생 ※※ + if("test".equals("test")){ + throw new Exception(); + } + } + + } catch(Exception e){ + /* + + 커스텀 에러 구성 + InnorixCustomError (※ Agent 모드 전용 옵션) + InnorixCustomError.set(Error Code, Error Message, Error Title, retry); + InnorixCustomError.run(); + + - Error Code : 1100번대 번호로 사용 권장 (1100번대 이하는 내부적으로 사용하는 코드로 충돌날 수 있음) + */ + InnorixCustomError customError = new InnorixCustomError(response); + customError.set("1234", "Test Error Tit", "Test Error Content", false); //에러코드, 에러제목, 에러내용, 재전송여부 + customError.run(); + + e.printStackTrace(); + } +} + + + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadCustomValue.html b/src/main/webapp/innorix/gnexam/uploadCustomValue.html new file mode 100644 index 00000000..7c1a1d23 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadCustomValue.html @@ -0,0 +1,50 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadCustomValue.jsp b/src/main/webapp/innorix/gnexam/uploadCustomValue.jsp new file mode 100644 index 00000000..abdeea62 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadCustomValue.jsp @@ -0,0 +1,64 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> +<%-- <%@page import="com.innorix.transfer.InnorixCustomValue"%> --%> +<%@page import="com.innorix.multipartrequest.MultipartRequest"%> +<%@page import="java.io.File"%> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if ("POST".equals(request.getMethod())) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + + String _run_retval = uploader.run(); + + //개별파일 업로드 완료 + if("attachFileCompleted".equals(_action)){ + /* + 커스텀밸류 구성, 전송 + uploader.setCustomValue(KEY, VALUE); + uploader.sendCustomValue(); + */ + uploader.setCustomValue("customKey", "customValue"); // 클라이언트측으로 key,value값 전달 + uploader.sendCustomValue(); + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("_action \t = " + _action); + System.out.println("_run_retval \t = " + _run_retval); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_start_offset \t = " + _start_offset); + System.out.println("_end_offset \t = " + _end_offset); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadExtension.html b/src/main/webapp/innorix/gnexam/uploadExtension.html new file mode 100644 index 00000000..ab18c1ae --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadExtension.html @@ -0,0 +1,76 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadIframe.html b/src/main/webapp/innorix/gnexam/uploadIframe.html new file mode 100644 index 00000000..d440f8c0 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadIframe.html @@ -0,0 +1,43 @@ + + + + + + + + + +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadRetryCount.html b/src/main/webapp/innorix/gnexam/uploadRetryCount.html new file mode 100644 index 00000000..dbc1a2e0 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadRetryCount.html @@ -0,0 +1,66 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadSession.jsp b/src/main/webapp/innorix/gnexam/uploadSession.jsp new file mode 100644 index 00000000..69bd388d --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadSession.jsp @@ -0,0 +1,81 @@ +<%@page import="com.innorix.transfer.InnorixTransfer"%> +<%@page import="java.io.File"%> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> +<%@ page import="java.util.*" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 + +if ("POST".equals(request.getMethod())) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + String _transferId = uploader.getParameter("_transferId"); // TransferId + String _unique_filename = uploader.getParameter("_unique_filename"); // uniqueName + String _folder = uploader.getParameter("_folder"); // folder + + /* 파일정보 확인 */ + if("getFileInfo".equals(_action)) { + String filePath = directory + "/"; + + if(_folder.length() > 0){ //폴더가 존재할 경우 + filePath += _folder.replace("\\", "/") + "/"; + } + + filePath += _orig_filename; + String uniqueId = _unique_filename.replace(".irx", "").replace(".dat", ""); //Agent: irx / HTML5: dat + + uploader.setCustomValue("uniqueId", uniqueId); //취소, 완료 시 uniqueId 취득용 + uploader.sendCustomValue(); + session.setAttribute(uniqueId, filePath); // 세션 저장 + + } + + String _run_retval = uploader.run(); + + /* 개별 파일 전송 완료 후 처리 */ + if("attachFileCompleted".equals(_action)) { + + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("_action \t = " + _action); + System.out.println("_run_retval \t = " + _run_retval); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_start_offset \t = " + _start_offset); + System.out.println("_end_offset \t = " + _end_offset); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + + +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadSetDirectory.html b/src/main/webapp/innorix/gnexam/uploadSetDirectory.html new file mode 100644 index 00000000..958f8f1c --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadSetDirectory.html @@ -0,0 +1,80 @@ + + + + + + + + + ← 예제 목록

+

업로드 시 서버 저장경로 변경 - 사용자에게 입력받은 값으로 서버 업로드경로에 폴더명을 생성하는 예제입니다.

+ +
+ test1 : +

+ +

+ + 생년월일 입력 : + +

+ + + + + + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/uploadSetDirectory.jsp b/src/main/webapp/innorix/gnexam/uploadSetDirectory.jsp new file mode 100644 index 00000000..5538e9dc --- /dev/null +++ b/src/main/webapp/innorix/gnexam/uploadSetDirectory.jsp @@ -0,0 +1,77 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixUpload" %> + +<% +// CORS체크를 위한 OPTIONS 메소드가 들어오므로 POST 일 경우에만 동작하도록 조건 추가 +if ("POST".equals(request.getMethod())) +{ + String directory = InnorixUpload.getServletAbsolutePath(request); + directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + int maxPostSize = 2147482624; // bytes + + InnorixUpload uploader = new InnorixUpload(request, response, maxPostSize, directory); + + /* + 전달되는 _action Param 정보 + speedCheck : 전송속도 측정 + getServerInfo : 서버정보 확인 + getFileInfo : 파일정보 확인 + attachFile : 파일전송 진행 + attachFileCompleted : 파일전송 완료 + */ + + String _action = uploader.getParameter("_action"); // 동작 플래그 + String _orig_filename = uploader.getParameter("_orig_filename"); // 원본 파일명 + String _new_filename = uploader.getParameter("_new_filename"); // 저장 파일명 + String _filesize = uploader.getParameter("_filesize"); // 파일 사이즈 + String _start_offset = uploader.getParameter("_start_offset"); // 파일저장 시작지점 + String _end_offset = uploader.getParameter("_end_offset"); // 파일저장 종료지점 + String _filepath = uploader.getParameter("_filepath"); // 파일 저장경로 + String _el = uploader.getParameter("el"); // 컨트롤 엘리먼트 ID + String _type = uploader.getParameter("type"); // 커스텀 정의 POST Param 1 + String _part = uploader.getParameter("part"); // 커스텀 정의 POST Param 2 + String _transferId = uploader.getParameter("_transferId"); // TransferId + + String _transParam1 = uploader.getParameter("transParam1"); // 사용자에게 입력받은 생년월일(birth) 값 + + /* + 업로드 시 서버 저장경로 지정 + uploader.setDirectory() + - uploader.run() 이전에 선언하여 변경가능합니다. + */ + String subDir = _transParam1; + uploader.setDirectory(directory + "/" + subDir); // 입력받은 값으로 폴더생성하려 서버의 저장 경로를 별도로 지정 + + String _run_retval = uploader.run(); + + // 개별파일 업로드 완료 + if("attachFileCompleted".equals(_action)) { + /* + System.out.println("========== uploader.isUploadDone() " + System.currentTimeMillis() + " =========="); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_filepath \t = " + _filepath); + */ + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("_action \t = " + _action); + System.out.println("_run_retval \t = " + _run_retval); + System.out.println("_orig_filename \t = " + _orig_filename); + System.out.println("_new_filename \t = " + _new_filename); + System.out.println("_filesize \t = " + _filesize); + System.out.println("_start_offset \t = " + _start_offset); + System.out.println("_end_offset \t = " + _end_offset); + System.out.println("_filepath \t = " + _filepath); + System.out.println("_el \t = " + _el); + System.out.println("_type \t = " + _type); + System.out.println("_part \t = " + _part); +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/useFuncBtn.html b/src/main/webapp/innorix/gnexam/useFuncBtn.html new file mode 100644 index 00000000..95b7c896 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/useFuncBtn.html @@ -0,0 +1,81 @@ + + + + + + + + + ← 예제 목록

+ +
+ test1 : +

+ +

useFuncBtn : 0 (기본값)

+

+ + +

+ +

useFuncBtn : 1

+

+ + +

+ +

useFuncBtn : 2

+

+ + +

+ + \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/zipCombine.html b/src/main/webapp/innorix/gnexam/zipCombine.html new file mode 100644 index 00000000..56baccb9 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/zipCombine.html @@ -0,0 +1 @@ + ← 예제 목록

압축(.zip)하여 파일 다운로드 - 업로드 후 다운로드 시 압축하여 다운로드 예제





\ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/zipDownload.jsp b/src/main/webapp/innorix/gnexam/zipDownload.jsp new file mode 100644 index 00000000..f6104f63 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/zipDownload.jsp @@ -0,0 +1,160 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.innorix.transfer.InnorixDownload" %> +<%@ page import="java.io.*" %> + +<% + +out.clear(); +out = pageContext.pushBody(); + +request.setCharacterEncoding("utf-8"); +String saveDir = delimiterReplace(request.getRealPath(request.getServletPath())); +String filePath = saveDir.substring(0, saveDir.lastIndexOf("/") + 1); + +/* + filePath + 파일이 저장된 스토리지 전체경로 + 디렉토리 구분은 윈도우, 유닉스 모두 "/" 문자 사용 + 윈도우 - C:/storage/path1/path2/data + 유닉스 - /storage/path1/path2/data +*/ + +// downloadType : "stream" 설정시 자동 전달되는 GET Param 값 +String szStartOffset = request.getParameter("_StartOffset"); +String szEndOffset = request.getParameter("_EndOffset"); + +// 파일 스트림 데이터 참조용 GET Param 값, 파라메터 명은 자유 형식 +String fileID = request.getParameter("fileID"); +String fileName = request.getParameter("fileName"); +String fileFullPath = request.getParameter("fileFullPath"); +String zipFileFullPath = request.getParameter("zipFileFullPath"); +String sysFileName = new String(); +String orgFileName = new String(); + +if (fileID != null) { + if (fileID.equals("1")) { + sysFileName = "sample-file.pdf"; // 시스템 저장 파일명 + orgFileName = "INNORIX WP 브로셔.pdf"; // 원본 파일명 + } + + if (fileID.equals("2")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP Brochure.pdf"; + } + + if (fileID.equals("3")) { + sysFileName = "sample-file.pdf"; + orgFileName = "INNORIX WP パンフレット.pdf"; + } +} + +if (fileName != null) { + sysFileName = "data/" + fileName; + orgFileName = "data/" + fileName; +} + +// 파일명 깨짐대응 문자열 인코딩 처리 +orgFileName = java.net.URLEncoder.encode(orgFileName, "UTF-8").replaceAll("\\+", "%20"); + +File file = null; + +if (fileFullPath != null && !"".equals(fileFullPath)) { + file = new File(fileFullPath); +} else if(zipFileFullPath != null && !"".equals(zipFileFullPath)){ + file = new File(zipFileFullPath); +} else { + file = new File(filePath + sysFileName); +} + +response.setContentType("application/octet-stream"); +response.setHeader("Accept-Ranges", "bytes"); +response.setHeader("Content-Disposition", "attachment; filename=\"" + file.getName() +"\""); + +long startOffset = 0; +long endOffset = 0; + +if (szStartOffset != null) { + startOffset = Long.parseLong(szStartOffset); +} + +if (szEndOffset != null) { + endOffset = Long.parseLong(szEndOffset); +} + +long contentLength = 0; + +if(szStartOffset != null || szEndOffset != null) { // 컨트롤 다운로드 요청시 + contentLength = endOffset - startOffset + 1; +} else { // html 일반 다운로드 요청시 + contentLength = file.length(); +} + +response.setHeader("Content-Length", "" + contentLength); + +byte b[] = new byte[8192]; +BufferedInputStream input = null; +BufferedOutputStream output = null; + +try { + input = new BufferedInputStream(new FileInputStream(file)); + output = new BufferedOutputStream(response.getOutputStream()); + + int read = 0; + + if (startOffset != 0) { + long n = input.skip(startOffset); + if (n == -1) read = -1; + } + + if(contentLength > 0) { + while (contentLength > 0) { + if(contentLength < 8192) { + b = new byte[(int)contentLength]; + } + + read = input.read(b); + + if(read == -1) { + break; + } + + output.write(b, 0, read); + contentLength = contentLength - read; + } + } + + System.out.println("========== innorix transfer " + System.currentTimeMillis() + " =========="); + System.out.println("fileID \t: " + fileID); + System.out.println("sysFilePath \t: " + filePath + sysFileName); + System.out.println("orgFileName \t: " + java.net.URLDecoder.decode(orgFileName, "UTF-8")); + System.out.println("totalLength \t: " + file.length() ); + System.out.println("startOffset \t: " + startOffset); + System.out.println("endOffset \t: " + endOffset); + +} catch(Exception e) { + e.printStackTrace(); +} finally { + if(output != null) { + output.flush(); + output.close(); + } + + if(input != null) { + input.close(); + } + if(zipFileFullPath != null && !"".equals(zipFileFullPath)){ + file.delete(); + } +} + +%> + +<%! +private String delimiterReplace(String fullDir) +{ + String ret1 = fullDir.replaceAll("\\\\+", "/"); + String ret2 = ret1.replaceAll("\\/+", "/"); + + return ret2; +} +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/gnexam/zipFiles.jsp b/src/main/webapp/innorix/gnexam/zipFiles.jsp new file mode 100644 index 00000000..dee3be08 --- /dev/null +++ b/src/main/webapp/innorix/gnexam/zipFiles.jsp @@ -0,0 +1,91 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + +<%@ page import="com.innorix.transfer.InnorixUpload" %> +<%@ page import="java.io.File" %> +<%@ page import="java.io.FileInputStream" %> +<%@ page import="java.io.FileOutputStream" %> +<%@ page import="java.util.zip.ZipEntry" %> +<%@ page import="java.util.zip.ZipOutputStream" %> +<%@ page import="java.io.PrintWriter" %> +<%@ page import="org.json.JSONObject"%> + + + +<% +String directory = InnorixUpload.getServletAbsolutePath(request); +directory = directory.substring(0, directory.lastIndexOf("/") + 1) + "data"; + +String strFilePaths = request.getParameter("filePaths"); //ZIP이름 만든거 +String strZipFileName = request.getParameter("zipFileName"); //서버에 저장된 파일 경로 + +System.out.println("========== 압축시작 =========="); +if ("POST".equals(request.getMethod())) +{ + + if (strFilePaths != null) { + String[] arrFilePath = strFilePaths.split(","); //파일경로 배열에 담고 + + byte[] buf = new byte[1024]; //buf 사이즈 설정 + + ZipOutputStream output = null; + + // 압축 + try { + //ZIP파일 압축 START + output = new ZipOutputStream(new FileOutputStream(directory + "/" + strZipFileName)); // zip 파일 생성 + //여기 생성한건 틀?만 생성해둔거 + for (int i=0; i 0) { // 압축 대상의 파일(data)을 설정된 사이즈(1024)만큼 읽어 들인다. + //in파일을 buf사이즈 만큼 읽어서 len에 넣어라 이게 0보다크면 zip틀만든거에 넣어라 + output.write(buf, 0, len); //읽은 파일을 ZipOutPutStream에 Write + } + output.closeEntry(); + //zip 파일 압축 END + // * 작성해둔거 메모리 부하 가비지컬렉션 주소참조 + // TRY CATCH 이중으로 쓰는 문제 수정해놓기 + // + } catch(Exception e) { + e.printStackTrace(); + + } finally { + if(in != null) { + try { in.close(); } catch(Exception e) { } + } + } + } + } catch(Exception e) { + e.printStackTrace(); + } finally { + if( output != null ) { + try { output.close(); } catch(Exception e) {} + } + } + + JSONObject json = new JSONObject(); + File zipFile = new File(directory + "/" + strZipFileName); + json.put("zipFileName", zipFile.getName()); + json.put("zipFilePath", zipFile.getAbsolutePath()); + json.put("zipFileSize", zipFile.getTotalSpace()); + + System.out.println("strZipFileName :"+strZipFileName); + System.out.println("zipFileName :"+zipFile.getName()); + System.out.println("zipFilePath :"+zipFile.getAbsolutePath()); + System.out.println("zipFileSize :"+zipFile.getTotalSpace()); + response.getWriter().print(json); + + } +} + +// CORS 관련 헤더 추가 +response.setHeader("Access-Control-Allow-Origin", "*"); +response.setHeader("Access-Control-Allow-Credentials", "true"); +response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); +response.setHeader("Access-Control-Allow-Headers", "Authorization,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type"); +%> \ No newline at end of file diff --git a/src/main/webapp/innorix/icon/application.png b/src/main/webapp/innorix/icon/application.png new file mode 100644 index 00000000..1dee9e36 Binary files /dev/null and b/src/main/webapp/innorix/icon/application.png differ diff --git a/src/main/webapp/innorix/icon/code.png b/src/main/webapp/innorix/icon/code.png new file mode 100644 index 00000000..0c76bd12 Binary files /dev/null and b/src/main/webapp/innorix/icon/code.png differ diff --git a/src/main/webapp/innorix/icon/css.png b/src/main/webapp/innorix/icon/css.png new file mode 100644 index 00000000..f907e44b Binary files /dev/null and b/src/main/webapp/innorix/icon/css.png differ diff --git a/src/main/webapp/innorix/icon/db.png b/src/main/webapp/innorix/icon/db.png new file mode 100644 index 00000000..bddba1f9 Binary files /dev/null and b/src/main/webapp/innorix/icon/db.png differ diff --git a/src/main/webapp/innorix/icon/directory.png b/src/main/webapp/innorix/icon/directory.png new file mode 100644 index 00000000..784e8fa4 Binary files /dev/null and b/src/main/webapp/innorix/icon/directory.png differ diff --git a/src/main/webapp/innorix/icon/doc.png b/src/main/webapp/innorix/icon/doc.png new file mode 100644 index 00000000..ae8ecbf4 Binary files /dev/null and b/src/main/webapp/innorix/icon/doc.png differ diff --git a/src/main/webapp/innorix/icon/file.png b/src/main/webapp/innorix/icon/file.png new file mode 100644 index 00000000..8b8b1ca0 Binary files /dev/null and b/src/main/webapp/innorix/icon/file.png differ diff --git a/src/main/webapp/innorix/icon/film.png b/src/main/webapp/innorix/icon/film.png new file mode 100644 index 00000000..b0ce7bb1 Binary files /dev/null and b/src/main/webapp/innorix/icon/film.png differ diff --git a/src/main/webapp/innorix/icon/flash.png b/src/main/webapp/innorix/icon/flash.png new file mode 100644 index 00000000..5769120b Binary files /dev/null and b/src/main/webapp/innorix/icon/flash.png differ diff --git a/src/main/webapp/innorix/icon/folder_open.png b/src/main/webapp/innorix/icon/folder_open.png new file mode 100644 index 00000000..4e354835 Binary files /dev/null and b/src/main/webapp/innorix/icon/folder_open.png differ diff --git a/src/main/webapp/innorix/icon/html.png b/src/main/webapp/innorix/icon/html.png new file mode 100644 index 00000000..6ed2490e Binary files /dev/null and b/src/main/webapp/innorix/icon/html.png differ diff --git a/src/main/webapp/innorix/icon/java.png b/src/main/webapp/innorix/icon/java.png new file mode 100644 index 00000000..b7bfcd15 Binary files /dev/null and b/src/main/webapp/innorix/icon/java.png differ diff --git a/src/main/webapp/innorix/icon/linux.png b/src/main/webapp/innorix/icon/linux.png new file mode 100644 index 00000000..52699bfe Binary files /dev/null and b/src/main/webapp/innorix/icon/linux.png differ diff --git a/src/main/webapp/innorix/icon/ms4.png b/src/main/webapp/innorix/icon/ms4.png new file mode 100644 index 00000000..1c7bdb16 Binary files /dev/null and b/src/main/webapp/innorix/icon/ms4.png differ diff --git a/src/main/webapp/innorix/icon/music.png b/src/main/webapp/innorix/icon/music.png new file mode 100644 index 00000000..a8b3ede3 Binary files /dev/null and b/src/main/webapp/innorix/icon/music.png differ diff --git a/src/main/webapp/innorix/icon/pdf.png b/src/main/webapp/innorix/icon/pdf.png new file mode 100644 index 00000000..8f8095e4 Binary files /dev/null and b/src/main/webapp/innorix/icon/pdf.png differ diff --git a/src/main/webapp/innorix/icon/php.png b/src/main/webapp/innorix/icon/php.png new file mode 100644 index 00000000..7868a259 Binary files /dev/null and b/src/main/webapp/innorix/icon/php.png differ diff --git a/src/main/webapp/innorix/icon/picture.png b/src/main/webapp/innorix/icon/picture.png new file mode 100644 index 00000000..4a158fef Binary files /dev/null and b/src/main/webapp/innorix/icon/picture.png differ diff --git a/src/main/webapp/innorix/icon/ppt.png b/src/main/webapp/innorix/icon/ppt.png new file mode 100644 index 00000000..c4eff038 Binary files /dev/null and b/src/main/webapp/innorix/icon/ppt.png differ diff --git a/src/main/webapp/innorix/icon/psd.png b/src/main/webapp/innorix/icon/psd.png new file mode 100644 index 00000000..73c5b3f2 Binary files /dev/null and b/src/main/webapp/innorix/icon/psd.png differ diff --git a/src/main/webapp/innorix/icon/ruby.png b/src/main/webapp/innorix/icon/ruby.png new file mode 100644 index 00000000..f59b7c43 Binary files /dev/null and b/src/main/webapp/innorix/icon/ruby.png differ diff --git a/src/main/webapp/innorix/icon/script.png b/src/main/webapp/innorix/icon/script.png new file mode 100644 index 00000000..63fe6cef Binary files /dev/null and b/src/main/webapp/innorix/icon/script.png differ diff --git a/src/main/webapp/innorix/icon/spinner.gif b/src/main/webapp/innorix/icon/spinner.gif new file mode 100644 index 00000000..85b99d46 Binary files /dev/null and b/src/main/webapp/innorix/icon/spinner.gif differ diff --git a/src/main/webapp/innorix/icon/txt.png b/src/main/webapp/innorix/icon/txt.png new file mode 100644 index 00000000..813f712f Binary files /dev/null and b/src/main/webapp/innorix/icon/txt.png differ diff --git a/src/main/webapp/innorix/icon/xls.png b/src/main/webapp/innorix/icon/xls.png new file mode 100644 index 00000000..b977d7e5 Binary files /dev/null and b/src/main/webapp/innorix/icon/xls.png differ diff --git a/src/main/webapp/innorix/icon/zip.png b/src/main/webapp/innorix/icon/zip.png new file mode 100644 index 00000000..fd4bbccd Binary files /dev/null and b/src/main/webapp/innorix/icon/zip.png differ diff --git a/src/main/webapp/innorix/img/Exabyter_trnWin_logo.png b/src/main/webapp/innorix/img/Exabyter_trnWin_logo.png new file mode 100644 index 00000000..cc349081 Binary files /dev/null and b/src/main/webapp/innorix/img/Exabyter_trnWin_logo.png differ diff --git a/src/main/webapp/innorix/img/close-blue.png b/src/main/webapp/innorix/img/close-blue.png new file mode 100644 index 00000000..76a2cea3 Binary files /dev/null and b/src/main/webapp/innorix/img/close-blue.png differ diff --git a/src/main/webapp/innorix/img/close-gray.png b/src/main/webapp/innorix/img/close-gray.png new file mode 100644 index 00000000..5964653d Binary files /dev/null and b/src/main/webapp/innorix/img/close-gray.png differ diff --git a/src/main/webapp/innorix/img/close-white.png b/src/main/webapp/innorix/img/close-white.png new file mode 100644 index 00000000..be1b05ea Binary files /dev/null and b/src/main/webapp/innorix/img/close-white.png differ diff --git a/src/main/webapp/innorix/img/dropzone.gif b/src/main/webapp/innorix/img/dropzone.gif new file mode 100644 index 00000000..ee7a9b49 Binary files /dev/null and b/src/main/webapp/innorix/img/dropzone.gif differ diff --git a/src/main/webapp/innorix/img/dropzone.png b/src/main/webapp/innorix/img/dropzone.png new file mode 100644 index 00000000..693c4cbb Binary files /dev/null and b/src/main/webapp/innorix/img/dropzone.png differ diff --git a/src/main/webapp/innorix/img/empty-file.png b/src/main/webapp/innorix/img/empty-file.png new file mode 100644 index 00000000..6d7b787b Binary files /dev/null and b/src/main/webapp/innorix/img/empty-file.png differ diff --git a/src/main/webapp/innorix/img/google.png b/src/main/webapp/innorix/img/google.png new file mode 100644 index 00000000..d8bebb1c Binary files /dev/null and b/src/main/webapp/innorix/img/google.png differ diff --git a/src/main/webapp/innorix/img/innorix_control_list_btns.png b/src/main/webapp/innorix/img/innorix_control_list_btns.png new file mode 100644 index 00000000..52b7393e Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_control_list_btns.png differ diff --git a/src/main/webapp/innorix/img/innorix_control_list_checkbox.png b/src/main/webapp/innorix/img/innorix_control_list_checkbox.png new file mode 100644 index 00000000..86fc6a44 Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_control_list_checkbox.png differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_btn_close.png b/src/main/webapp/innorix/img/innorix_trnWindow_btn_close.png new file mode 100644 index 00000000..6318a8b1 Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_btn_close.png differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_graph_bg.png b/src/main/webapp/innorix/img/innorix_trnWindow_graph_bg.png new file mode 100644 index 00000000..468b2c7f Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_graph_bg.png differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_icons.gif b/src/main/webapp/innorix/img/innorix_trnWindow_icons.gif new file mode 100644 index 00000000..d303b506 Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_icons.gif differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_icons_16.gif b/src/main/webapp/innorix/img/innorix_trnWindow_icons_16.gif new file mode 100644 index 00000000..7c3559df Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_icons_16.gif differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_icons_16_gray.gif b/src/main/webapp/innorix/img/innorix_trnWindow_icons_16_gray.gif new file mode 100644 index 00000000..dcd9989b Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_icons_16_gray.gif differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_log_bg.png b/src/main/webapp/innorix/img/innorix_trnWindow_log_bg.png new file mode 100644 index 00000000..12ed501a Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_log_bg.png differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_secure_logo.png b/src/main/webapp/innorix/img/innorix_trnWindow_secure_logo.png new file mode 100644 index 00000000..3f698592 Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_secure_logo.png differ diff --git a/src/main/webapp/innorix/img/innorix_trnWindow_speed_colors.gif b/src/main/webapp/innorix/img/innorix_trnWindow_speed_colors.gif new file mode 100644 index 00000000..4f3bb124 Binary files /dev/null and b/src/main/webapp/innorix/img/innorix_trnWindow_speed_colors.gif differ diff --git a/src/main/webapp/innorix/img/move-blue.png b/src/main/webapp/innorix/img/move-blue.png new file mode 100644 index 00000000..5f186db3 Binary files /dev/null and b/src/main/webapp/innorix/img/move-blue.png differ diff --git a/src/main/webapp/innorix/img/move-white.png b/src/main/webapp/innorix/img/move-white.png new file mode 100644 index 00000000..aea38360 Binary files /dev/null and b/src/main/webapp/innorix/img/move-white.png differ diff --git a/src/main/webapp/innorix/img/paper-plane.png b/src/main/webapp/innorix/img/paper-plane.png new file mode 100644 index 00000000..27ad2faf Binary files /dev/null and b/src/main/webapp/innorix/img/paper-plane.png differ diff --git a/src/main/webapp/innorix/img/qrcode1.png b/src/main/webapp/innorix/img/qrcode1.png new file mode 100644 index 00000000..10cab120 Binary files /dev/null and b/src/main/webapp/innorix/img/qrcode1.png differ diff --git a/src/main/webapp/innorix/img/qrcode2.png b/src/main/webapp/innorix/img/qrcode2.png new file mode 100644 index 00000000..6686fdf2 Binary files /dev/null and b/src/main/webapp/innorix/img/qrcode2.png differ diff --git a/src/main/webapp/innorix/img/wp_graph.png b/src/main/webapp/innorix/img/wp_graph.png new file mode 100644 index 00000000..7c2fa1f6 Binary files /dev/null and b/src/main/webapp/innorix/img/wp_graph.png differ diff --git a/src/main/webapp/innorix/index.html b/src/main/webapp/innorix/index.html new file mode 100644 index 00000000..5347394a --- /dev/null +++ b/src/main/webapp/innorix/index.html @@ -0,0 +1,34 @@ + + + + + + +
+ + + \ No newline at end of file diff --git a/src/main/webapp/innorix/innorix.css b/src/main/webapp/innorix/innorix.css new file mode 100644 index 00000000..b5d98ae2 --- /dev/null +++ b/src/main/webapp/innorix/innorix.css @@ -0,0 +1 @@ +@charset "UTF-8";.innorix_base,.innorix_basic,.innorix_compact,.innorix_input,.innorix_tester,.irx_messageBox,.irx_transferWin{font-family:'Segoe UI',arial,'돋움',Dotum,'Apple SD Gothic Neo',AppleSDGothicNeo,sans-serif}.innorix_base ol,.innorix_base ul,.innorix_basic ol,.innorix_basic ul,.innorix_compact ol,.innorix_compact ul,.innorix_input ol,.innorix_input ul,.innorix_tester ol,.innorix_tester ul,.irx_messageBox ol,.irx_messageBox ul,.irx_transferWin ol,.irx_transferWin ul{list-style:none;margin:0;padding:0}.innorix_base button,.innorix_basic button,.innorix_compact button,.innorix_input button,.innorix_tester button,.irx_messageBox button,.irx_transferWin button{outline:0;cursor:pointer;margin:0;padding:0}.innorix_base blockquote,.innorix_base q,.innorix_basic blockquote,.innorix_basic q,.innorix_compact blockquote,.innorix_compact q,.innorix_input blockquote,.innorix_input q,.innorix_tester blockquote,.innorix_tester q,.irx_messageBox blockquote,.irx_messageBox q,.irx_transferWin blockquote,.irx_transferWin q{quotes:none}.innorix_base{color:#111;padding:0;font-size:12px;position:relative}.innorix_base .irx_inner{background:#fff;border:2px solid #13a097}.innorix_base .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#13a097}.innorix_base .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#888}.innorix_base .irx_inner .irx_listGrid_wrap{border-left:2px solid #ccc}.innorix_base .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_base .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#13a097;color:#fff}.innorix_base .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#ebebeb}.innorix_base .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#d9d9d9}.innorix_base .irx_inner._irx_dragging{border:2px solid #295388}.innorix_base .irx_inner .irx_empty{color:#aaa}.innorix_base.irx_theme_blood{color:#000}.innorix_base.irx_theme_blood .irx_inner{background:red;border:2px solid #8b2b3b}.innorix_base.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#175676}.innorix_base.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:maroon}.innorix_base.irx_theme_blood .irx_inner .irx_listGrid_wrap{border-left:2px solid #900}.innorix_base.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_base.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#175676;color:red}.innorix_base.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#d60000}.innorix_base.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#b30000}.innorix_base.irx_theme_blood .irx_inner._irx_dragging{border:2px solid #000}.innorix_base.irx_theme_blood .irx_inner .irx_empty{color:#aaa}.innorix_base.irx_theme_darker-than-black{color:#aaa}.innorix_base.irx_theme_darker-than-black .irx_inner{background:#333;border:2px solid #333}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#ccc}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#6f6f6f}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap{border-left:2px solid #404040}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#ccc;color:#333}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#454545}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#262626}.innorix_base.irx_theme_darker-than-black .irx_inner._irx_dragging{border:2px solid #ff7518}.innorix_base.irx_theme_darker-than-black .irx_inner .irx_empty{color:#aaa}.innorix_base.irx_theme_boombaya{color:#eee5e9}.innorix_base.irx_theme_boombaya .irx_inner{background:#492c1d;border:2px solid #492c1d}.innorix_base.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#66b3ba}.innorix_base.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#9c8983}.innorix_base.irx_theme_boombaya .irx_inner .irx_listGrid_wrap{border-left:2px solid #5b3724}.innorix_base.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_base.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#66b3ba;color:#492c1d}.innorix_base.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#633b27}.innorix_base.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#372116}.innorix_base.irx_theme_boombaya .irx_inner._irx_dragging{border:2px solid #66b3ba}.innorix_base.irx_theme_boombaya .irx_inner .irx_empty{color:#aaa}.innorix_base .irx_inner{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:-moz-none;-o-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.innorix_base .irx_inner .irx_empty{position:absolute;background:url(img/dropzone.gif) no-repeat center center;width:100%;height:100%}.innorix_base .irx_inner .irx_loading{display:none;position:absolute;top:0;bottom:0;left:0;right:0}.innorix_base .irx_inner .irx_contents{position:absolute;top:10px;left:10px;right:10px;bottom:10px;display:none}.innorix_base .irx_inner .irx_contents .irx_infoBox{position:absolute;width:200px;height:100%}.innorix_base .irx_inner .irx_contents .irx_infoBox .irx_infoBox_inner{position:absolute;height:200px;width:200px;top:50%;margin-top:-100px;text-align:center}.innorix_base .irx_inner .irx_contents .irx_infoBox .irx_infoBox_inner .irx_top{padding-top:50px;margin-bottom:10px}.innorix_base .irx_inner .irx_contents .irx_infoBox .irx_infoBox_inner .irx_top .irx_size{display:block;font-size:4em;font-weight:700;line-height:1.2em}.innorix_base .irx_inner .irx_contents .irx_infoBox .irx_infoBox_inner .irx_top .irx_unit{display:block;font-weight:700;font-size:1.2em;line-height:1em}.innorix_base .irx_inner .irx_contents .irx_listGrid_wrap{position:relative;height:100%;margin-left:200px}.innorix_base .irx_inner .irx_contents .irx_listGrid_wrap .irx_listGrid{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;text-align:left}.innorix_base .irx_inner .irx_contents .irx_listGrid_wrap .irx_listGrid li{position:relative;padding:0 20px;height:30px;line-height:30px;cursor:pointer;overflow:hidden;white-space:nowrap}.innorix_base .irx_inner .irx_contents .irx_listGrid_wrap .irx_listGrid li .irx_remove{display:none;width:30px;height:30px;line-height:30px;text-align:center;font-size:1.1em;font-weight:700;position:absolute;right:0;top:0}.innorix_base .irx_inner .irx_contents .irx_listGrid_wrap .irx_listGrid li.selected .irx_remove{display:block}.innorix_base .irx_inner .irx_contents .irx_listGrid_wrap .irx_listGrid li label{display:block;width:100%;height:100%}.innorix_base .irx_inner .irx_contents .irx_listGrid_wrap .irx_listGrid li input{display:none}.innorix_base,.innorix_basic,.innorix_compact,.innorix_input,.innorix_tester,.irx_messageBox,.irx_transferWin{font-family:'Segoe UI',arial,'돋움',Dotum,'Apple SD Gothic Neo',AppleSDGothicNeo,sans-serif}.innorix_base ol,.innorix_base ul,.innorix_basic ol,.innorix_basic ul,.innorix_compact ol,.innorix_compact ul,.innorix_input ol,.innorix_input ul,.innorix_tester ol,.innorix_tester ul,.irx_messageBox ol,.irx_messageBox ul,.irx_transferWin ol,.irx_transferWin ul{list-style:none;margin:0;padding:0}.innorix_base button,.innorix_basic button,.innorix_compact button,.innorix_input button,.innorix_tester button,.irx_messageBox button,.irx_transferWin button{outline:0;cursor:pointer;margin:0;padding:0}.innorix_base blockquote,.innorix_base q,.innorix_basic blockquote,.innorix_basic q,.innorix_compact blockquote,.innorix_compact q,.innorix_input blockquote,.innorix_input q,.innorix_tester blockquote,.innorix_tester q,.irx_messageBox blockquote,.irx_messageBox q,.irx_transferWin blockquote,.irx_transferWin q{quotes:none}.innorix_input .innorix_inner{width:100%}.innorix_input .irx_download,.innorix_input .irx_upload{display:none;margin-bottom:5px;padding-left:107px}.innorix_input .irx_download .irx_upload_input,.innorix_input .irx_upload .irx_upload_input{cursor:pointer}.innorix_input .irx_download .irx_download_input,.innorix_input .irx_download .irx_upload_input,.innorix_input .irx_upload .irx_download_input,.innorix_input .irx_upload .irx_upload_input{background:#fff;display:block;float:left;width:100%;margin-left:-107px;white-space:nowrap;height:25px;line-height:25px;font-size:12px;text-indent:10px;overflow:hidden;border:1px solid #ddd}.innorix_input .irx_download .irx_download_button,.innorix_input .irx_download .irx_upload_button,.innorix_input .irx_upload .irx_download_button,.innorix_input .irx_upload .irx_upload_button{font-size:12px;width:100px;height:25px;line-height:25px;text-align:center;margin-left:5px}.innorix_base,.innorix_basic,.innorix_compact,.innorix_input,.innorix_tester,.irx_messageBox,.irx_transferWin{font-family:'Segoe UI',arial,'돋움',Dotum,'Apple SD Gothic Neo',AppleSDGothicNeo,sans-serif}.innorix_base ol,.innorix_base ul,.innorix_basic ol,.innorix_basic ul,.innorix_compact ol,.innorix_compact ul,.innorix_input ol,.innorix_input ul,.innorix_tester ol,.innorix_tester ul,.irx_messageBox ol,.irx_messageBox ul,.irx_transferWin ol,.irx_transferWin ul{list-style:none;margin:0;padding:0}.innorix_base button,.innorix_basic button,.innorix_compact button,.innorix_input button,.innorix_tester button,.irx_messageBox button,.irx_transferWin button{outline:0;cursor:pointer;margin:0;padding:0}.innorix_base blockquote,.innorix_base q,.innorix_basic blockquote,.innorix_basic q,.innorix_compact blockquote,.innorix_compact q,.innorix_input blockquote,.innorix_input q,.innorix_tester blockquote,.innorix_tester q,.irx_messageBox blockquote,.irx_messageBox q,.irx_transferWin blockquote,.irx_transferWin q{quotes:none}.innorix_tester{border:2px solid #13a097;overflow:hidden;color:#111;padding:0;font-size:12px;position:relative}.innorix_tester .irx_inner{background:#fff;border:2px solid #13a097}.innorix_tester .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#13a097}.innorix_tester .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#888}.innorix_tester .irx_inner .irx_listGrid_wrap{border-left:2px solid #ccc}.innorix_tester .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_tester .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#13a097;color:#fff}.innorix_tester .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#ebebeb}.innorix_tester .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#d9d9d9}.innorix_tester .irx_inner._irx_dragging{border:2px solid #295388}.innorix_tester .irx_inner .irx_empty{color:#aaa}.innorix_tester.irx_theme_blood{color:#000}.innorix_tester.irx_theme_blood .irx_inner{background:red;border:2px solid #8b2b3b}.innorix_tester.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#175676}.innorix_tester.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:maroon}.innorix_tester.irx_theme_blood .irx_inner .irx_listGrid_wrap{border-left:2px solid #900}.innorix_tester.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_tester.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#175676;color:red}.innorix_tester.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#d60000}.innorix_tester.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#b30000}.innorix_tester.irx_theme_blood .irx_inner._irx_dragging{border:2px solid #000}.innorix_tester.irx_theme_blood .irx_inner .irx_empty{color:#aaa}.innorix_tester.irx_theme_darker-than-black{color:#aaa}.innorix_tester.irx_theme_darker-than-black .irx_inner{background:#333;border:2px solid #333}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#ccc}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#6f6f6f}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap{border-left:2px solid #404040}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#ccc;color:#333}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#454545}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#262626}.innorix_tester.irx_theme_darker-than-black .irx_inner._irx_dragging{border:2px solid #ff7518}.innorix_tester.irx_theme_darker-than-black .irx_inner .irx_empty{color:#aaa}.innorix_tester.irx_theme_boombaya{color:#eee5e9}.innorix_tester.irx_theme_boombaya .irx_inner{background:#492c1d;border:2px solid #492c1d}.innorix_tester.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#66b3ba}.innorix_tester.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#9c8983}.innorix_tester.irx_theme_boombaya .irx_inner .irx_listGrid_wrap{border-left:2px solid #5b3724}.innorix_tester.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_tester.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#66b3ba;color:#492c1d}.innorix_tester.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#633b27}.innorix_tester.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#372116}.innorix_tester.irx_theme_boombaya .irx_inner._irx_dragging{border:2px solid #66b3ba}.innorix_tester.irx_theme_boombaya .irx_inner .irx_empty{color:#aaa}.innorix_tester div.irx_filetree.empty-uploader{background:url(img/dropzone.png) no-repeat center center;background-color:#fff}.innorix_tester div.irx_filetree.empty-downloader{background:url(img/empty-file.png) no-repeat center center;background-color:#fff}.innorix_tester div.irx_filetree{width:550px;height:200px;position:relative;border-right:1px solid #dcdcdc;background:#fff;overflow:hidden;overflow-y:auto;float:left}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #efefef;padding:5px;padding-left:5px;height:20px;background-color:#fff}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div{float:left}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) -20px 0}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.tree-icon{width:18px;height:18px;margin-left:4px;margin-top:2px}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filename{margin-top:1px;margin-left:2px;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;height:18px;line-height:18px}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filesize{color:#757575;margin-left:10px;margin-top:1px;vertical-align:middle;height:18px;line-height:18px}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group{float:right;clear:both;padding:0;margin:0;margin-top:-20px;display:none;text-align:right}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_move{position:absolute;margin-left:-50px;margin-top:2px;width:16px;height:16px;cursor:default;background:url(img/move-blue.png) no-repeat}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_del{position:absolute;margin-left:-30px;margin-top:3px;width:15px;height:15px;cursor:pointer;background:url(img/close-blue.png) no-repeat}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper:hover .btn-group{display:block}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected div.irx-file-inner-wrapper:first-child{background-color:#0c93dd;color:#fff;border-bottom:1px solid #0c93dd}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected div.irx-file-inner-wrapper:first-child div.filesize{color:#fff}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected div.irx-file-inner-wrapper:first-child div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) 0 0}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected div.irx-file-inner-wrapper:first-child div.btn-group span.irx_btn_move{background:url(img/move-white.png) no-repeat}.innorix_tester div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected div.irx-file-inner-wrapper:first-child div.btn-group span.irx_btn_del{background:url(img/close-white.png) no-repeat}.innorix_tester div.irx_infoBox{background:#fafafa;border:1px solid #dcdcdc}.innorix_tester div.irx_infoBox div.irx-chart-wrapper{position:relative;width:138px;float:left;height:180px;padding:10px}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-canvas-wrapper canvas.irx-chart-canvas{margin-top:5px}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size.file-select{height:50px;padding-top:0}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size{height:43px;padding-top:7px;text-align:center;margin-top:-88px;width:100%}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.selected-file-size{color:#2297c7;font-size:14pt;height:23px}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.total-file-size{color:#757575;font-size:12px;border-top:1px solid #d8d8d8;width:30%;margin:auto}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-count{text-align:center;margin-top:45px;width:100%}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;right:10px;width:15px;height:15px;cursor:pointer}.innorix_tester div.irx_infoBox div.irx-chart-wrapper div.irx-chart-btn-group div.irx-chart-toggle{position:absolute;width:15px;height:15px;opacity:0;background:url(img/close-gray.png) no-repeat}.innorix_tester div.irx_infoBox div.irx-mass-wrapper{position:absolute;width:100%;float:left;height:180px;padding:10px;display:none;background-color:#fff}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-canvas-wrapper canvas.irx-chart-canvas{margin-top:5px}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-file-size.file-select{height:50px;padding-top:0}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-file-size{height:43px;padding-top:7px;text-align:center;margin-top:30px;width:100%}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-file-size div.selected-file-size{color:#2297c7;font-size:14pt;height:23px}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-file-size div.total-file-size{color:#757575;font-size:12px;border-top:1px solid #d8d8d8;width:30%;margin:auto}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-file-count{text-align:center;margin-top:45px;width:100%;font-size:12.5px;line-height:15px}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;right:10px;width:10px;height:10px;cursor:pointer;top:10px;right:10px;font-size:16px;font-weight:700}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group div.irx-mass-toggle{color:#aaafb1}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group div.irx-mass-toggle:hover{color:#002060}.innorix_tester div.irx_infoBox div.irx-mass-wrapper div.irx-mass-wrapper-paper-image{background:url(img/paper-plane.png) left top no-repeat;width:152px;height:79px;background-size:152px 79px;position:absolute;right:76px;top:37px}.innorix_tester.chart-hide div.irx_filetree{min-width:100%}.innorix_tester.chart-hide div.irx-chart-wrapper{display:none}.tree-icon.directory{background:url(icon/directory.png) left top no-repeat}.tree-icon.directory-open{background:url(icon/folder_open.png) left top no-repeat}.tree-icon.expanded{background:url(icon/folder_open.png) left top no-repeat}.tree-icon.wait{background:url(icon/spinner.gif) left top no-repeat}.tree-icon.file-icon{background:url(icon/file.png) left top no-repeat}.tree-icon.file-icon.ext_3gp{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_afp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_afpa{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_asp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_aspx{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_avi{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_bat{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_bmp{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_c{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_cfm{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_cgi{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_com{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_cpp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_css{background:url(icon/css.png) left top no-repeat}.tree-icon.file-icon.ext_doc{background:url(icon/doc.png) left top no-repeat}.tree-icon.file-icon.ext_exe{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_gif{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_fla{background:url(icon/flash.png) left top no-repeat}.tree-icon.file-icon.ext_h{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_htm{background:url(icon/html.png) left top no-repeat}.tree-icon.file-icon.ext_html{background:url(icon/html.png) left top no-repeat}.tree-icon.file-icon.ext_jar{background:url(icon/java.png) left top no-repeat}.tree-icon.file-icon.ext_jpg{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_jpeg{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_js{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_lasso{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_log{background:url(icon/txt.png) left top no-repeat}.tree-icon.file-icon.ext_m4p{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_mov{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mp3{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_mp4{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mpg{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mpeg{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_ogg{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_pcx{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_pdf{background:url(icon/pdf.png) left top no-repeat}.tree-icon.file-icon.ext_php{background:url(icon/php.png) left top no-repeat}.tree-icon.file-icon.ext_png{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_ppt{background:url(icon/ppt.png) left top no-repeat}.tree-icon.file-icon.ext_psd{background:url(icon/psd.png) left top no-repeat}.tree-icon.file-icon.ext_pl{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_py{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_rb{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rbx{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rhtml{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rpm{background:url(icon/linux.png) left top no-repeat}.tree-icon.file-icon.ext_ruby{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_sql{background:url(icon/db.png) left top no-repeat}.tree-icon.file-icon.ext_swf{background:url(icon/flash.png) left top no-repeat}.tree-icon.file-icon.ext_tif{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_tiff{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_txt{background:url(icon/txt.png) left top no-repeat}.tree-icon.file-icon.ext_vb{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_wav{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_wmv{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_xls{background:url(icon/xls.png) left top no-repeat}.tree-icon.file-icon.ext_xml{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_zip{background:url(icon/zip.png) left top no-repeat}.tree-icon.file-icon.ext_directory{background:url(icon/directory.png) left top no-repeat}.tree-icon.file-icon.ext_ms4{background:url(icon/ms4.png) left top no-repeat}.innorix_base,.innorix_basic,.innorix_compact,.innorix_input,.innorix_tester,.irx_messageBox,.irx_transferWin{font-family:'Segoe UI',arial,'돋움',Dotum,'Apple SD Gothic Neo',AppleSDGothicNeo,sans-serif}.innorix_base ol,.innorix_base ul,.innorix_basic ol,.innorix_basic ul,.innorix_compact ol,.innorix_compact ul,.innorix_input ol,.innorix_input ul,.innorix_tester ol,.innorix_tester ul,.irx_messageBox ol,.irx_messageBox ul,.irx_transferWin ol,.irx_transferWin ul{list-style:none;margin:0;padding:0}.innorix_base button,.innorix_basic button,.innorix_compact button,.innorix_input button,.innorix_tester button,.irx_messageBox button,.irx_transferWin button{outline:0;cursor:pointer;margin:0;padding:0}.innorix_base blockquote,.innorix_base q,.innorix_basic blockquote,.innorix_basic q,.innorix_compact blockquote,.innorix_compact q,.innorix_input blockquote,.innorix_input q,.innorix_tester blockquote,.innorix_tester q,.irx_messageBox blockquote,.irx_messageBox q,.irx_transferWin blockquote,.irx_transferWin q{quotes:none}.innorix_basic{border:2px solid #09a3e4;overflow:hidden;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important;color:#111;padding:0;font-size:12px;position:relative}.innorix_basic .irx_inner{background:#fff;border:2px solid #13a097}.innorix_basic .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#13a097}.innorix_basic .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#888}.innorix_basic .irx_inner .irx_listGrid_wrap{border-left:2px solid #ccc}.innorix_basic .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_basic .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#13a097;color:#fff}.innorix_basic .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#ebebeb}.innorix_basic .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#d9d9d9}.innorix_basic .irx_inner._irx_dragging{border:2px solid #295388}.innorix_basic .irx_inner .irx_empty{color:#aaa}.innorix_basic.irx_theme_blood{color:#000}.innorix_basic.irx_theme_blood .irx_inner{background:red;border:2px solid #8b2b3b}.innorix_basic.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#175676}.innorix_basic.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:maroon}.innorix_basic.irx_theme_blood .irx_inner .irx_listGrid_wrap{border-left:2px solid #900}.innorix_basic.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_basic.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#175676;color:red}.innorix_basic.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#d60000}.innorix_basic.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#b30000}.innorix_basic.irx_theme_blood .irx_inner._irx_dragging{border:2px solid #000}.innorix_basic.irx_theme_blood .irx_inner .irx_empty{color:#aaa}.innorix_basic.irx_theme_darker-than-black{color:#aaa}.innorix_basic.irx_theme_darker-than-black .irx_inner{background:#333;border:2px solid #333}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#ccc}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#6f6f6f}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap{border-left:2px solid #404040}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#ccc;color:#333}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#454545}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#262626}.innorix_basic.irx_theme_darker-than-black .irx_inner._irx_dragging{border:2px solid #ff7518}.innorix_basic.irx_theme_darker-than-black .irx_inner .irx_empty{color:#aaa}.innorix_basic.irx_theme_boombaya{color:#eee5e9}.innorix_basic.irx_theme_boombaya .irx_inner{background:#492c1d;border:2px solid #492c1d}.innorix_basic.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#66b3ba}.innorix_basic.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#9c8983}.innorix_basic.irx_theme_boombaya .irx_inner .irx_listGrid_wrap{border-left:2px solid #5b3724}.innorix_basic.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_basic.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#66b3ba;color:#492c1d}.innorix_basic.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#633b27}.innorix_basic.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#372116}.innorix_basic.irx_theme_boombaya .irx_inner._irx_dragging{border:2px solid #66b3ba}.innorix_basic.irx_theme_boombaya .irx_inner .irx_empty{color:#aaa}.innorix_basic._irx_dragging{border:2px solid #81c7fc}.innorix_basic div{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important;position:static;white-space:normal;overflow:visible}.innorix_basic div.irx_filetree.empty-uploader{background:url(img/dropzone.png) no-repeat center center;background-color:#fff}.innorix_basic div.irx_filetree.empty-downloader{background-color:#fff}.innorix_basic div.irx_filetree .irx-empty-download-text{color:#6c6c6c;position:absolute;margin:0;top:46%;width:100%;text-align:center;font-size:25px}.innorix_basic .irx-hidden-input{opacity:0}.innorix_basic div.irx-file-header{padding:5px;padding-left:4px;display:none;position:fixed;width:100%;clear:both;background:#fafafa;border:1px solid #dcdcdc}.innorix_basic div.irx-file-header div{height:20px}.innorix_basic div.irx-file-header div.fileheader-checkbox{float:left;height:20px;width:20px;background:url(img/innorix_control_list_checkbox.png) -20px 0}.innorix_basic div.irx-file-header div.fileheader-checkbox.active{background:url(img/innorix_control_list_checkbox.png) 0 0}.innorix_basic div.irx-file-header div.irx-file-header-desc{float:left;margin-right:5px}.innorix_basic div.irx-file-header div.irx-file-remove-button-wrapper{float:none}.innorix_basic div.irx-file-header button.irx-file-remove-button{border:1px solid #cdcdcd;color:#646464;padding:0 5px;background:#fff;margin-right:5px;width:75px}.innorix_basic div.irx-file-header div.irx-file-download-button-wrapper{display:none}.innorix_basic div.irx-file-header button.irx-file-download-button{border:1px solid #cdcdcd;color:#646464;padding:0 5px;background:#fff;width:75px}.innorix_basic div.irx_filetree{width:550px;height:200px;position:relative;border-right:1px solid #dcdcdc;background:#fff;overflow:hidden;overflow-y:auto;float:left}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #efefef;padding:5px;padding-left:5px;height:20px;background-color:#fff;cursor:default}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div{float:left}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) -20px 0}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.tree-icon{width:18px;height:18px;margin-left:4px;margin-top:2px}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filename{margin-top:1px;margin-left:2px;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;height:18px;line-height:18px}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filesize{color:#757575;margin-left:10px;margin-top:1px;vertical-align:middle;height:18px;line-height:18px}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group{float:right;clear:both;padding:0;margin:0;margin-top:-20px;display:none;text-align:right}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_move{position:absolute;margin-left:-50px;margin-top:2px;width:16px;height:16px;cursor:default;background:url(img/move-blue.png) no-repeat}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_del{position:absolute;margin-left:-30px;margin-top:3px;width:15px;height:15px;cursor:pointer;background:url(img/close-blue.png) no-repeat}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper:hover .btn-group{display:block}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.is-removed>div.irx-file-inner-wrapper{color:#aaa}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper{background-color:#0c93dd;color:#fff;border-bottom:1px solid #0c93dd}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.filesize{color:#fff}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.filename{color:#fff}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) 0 0}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.btn-group span.irx_btn_move{background:url(img/move-white.png) no-repeat}.innorix_basic div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.btn-group span.irx_btn_del{background:url(img/close-white.png) no-repeat}.innorix_basic div.irx_infoBox{background:#fafafa}.innorix_basic div.irx_infoBox div.irx-chart-wrapper{position:relative;width:138px;float:left;height:180px;padding:10px}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-canvas-wrapper canvas.irx-chart-canvas{margin-top:5px}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size.file-select{height:50px;padding-top:0}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size{height:43px;padding-top:7px;text-align:center;margin-top:-88px;width:100%}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.selected-file-size{color:#2297c7;font-size:14pt;height:23px}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.total-file-size{color:#757575;font-size:12px;border-top:0 solid #d8d8d8;width:100%;margin:auto}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.topBorder{border-top:1px solid #d8d8d8;width:30%;margin:auto}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-count{color:#757575;text-align:center;margin-top:45px;width:100%;font-size:12.5px;line-height:15px}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;right:10px;width:15px;height:15px;cursor:pointer}.innorix_basic div.irx_infoBox div.irx-chart-wrapper div.irx-chart-btn-group div.irx-chart-toggle{position:absolute;width:15px;height:15px;opacity:0;background:url(img/close-gray.png) no-repeat}.innorix_basic div.irx_infoBox div.irx-preview-wrapper{position:relative;width:138px;float:left;height:180px;padding:10px;display:none;background:#fff}.innorix_basic div.irx_infoBox div.irx-preview-wrapper div.irx-preview-element{width:100%;height:calc(100% - 30px);overflow:hidden}.innorix_basic div.irx_infoBox div.irx-preview-wrapper div.irx-preview-element img.irx-preview-image{width:100%;height:auto}.innorix_basic div.irx_infoBox div.irx-preview-wrapper div.irx-preview-element iframe.irx-preview-pdf{width:158px;height:177px;overflow:hidden!important;overflow-x:hidden!important;overflow-y:hidden!important}.innorix_basic div.irx_infoBox div.irx-preview-wrapper div.irx-preview-file-size{height:15px;padding-top:7px;text-align:center;margin-top:-5px;width:100%;color:#2297c7}.innorix_basic div.irx_infoBox div.irx-preview-wrapper div.irx-preview-file-name{color:#2297c7;text-align:center;margin-top:2px;width:138px;font-size:12.5px;line-height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.innorix_basic div.irx_infoBox div.irx-preview-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;right:10px;width:15px;height:15px;cursor:pointer}.innorix_basic div.irx_infoBox div.irx-preview-wrapper div.irx-chart-btn-group div.irx-chart-toggle{position:absolute;width:15px;height:15px;opacity:0;background:url(img/close-gray.png) no-repeat}.innorix_basic div.irx_infoBox div.irx-mass-wrapper{position:absolute;width:100%;float:left;height:180px;padding:10px;display:none;background-color:#fff;font-family:Helvetica,sans-serif}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-canvas-wrapper canvas.irx-chart-canvas{margin-top:5px}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-title{padding-top:7px;text-align:center;margin-top:10px;color:#002060;font-size:22px;font-weight:700}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-content{padding-top:7px;text-align:center;color:#002060;font-size:18px;font-weight:700}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-size{padding-top:7px;text-align:center;margin-top:50px;width:100%;font-size:16px;font-weight:700;color:#002060}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-size span.massFileNumber{color:#00b0f0;font-size:24px;height:23px;font-weight:700}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-size span.massFileText{color:#002060;font-size:16px;font-weight:700}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;top:0;right:16px;width:28px;height:28px;cursor:pointer;font-size:28px;font-weight:700}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group div.irx-mass-toggle{color:#aaafb1}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group div.irx-mass-toggle:hover{color:#002060}.innorix_basic div.irx_infoBox div.irx-mass-wrapper div.irx-mass-wrapper-paper-image{background:url(img/paper-plane.png) left top no-repeat;width:152px;height:79px;background-size:152px 79px;position:absolute;right:46px;top:27px;margin:auto}.innorix_basic.chart-hide div.irx_filetree{min-width:100%}.innorix_basic.chart-hide div.irx-chart-wrapper{display:none}.innorix_basic.preview-show div.irx_filetree{min-width:0;width:calc(100% - 160px)}.innorix_basic.preview-show div.irx-preview-wrapper{display:block!important}.innorix_basic.preview-show div.irx-file-header-list{width:calc(100% - 160px)}.innorix_basic.preview-show div.irx-chart-wrapper{display:none}.__irx.context-menu-layer{position:fixed;z-index:101;top:0;left:0;opacity:0;background-color:#000;height:100vw;width:100vw;display:none;display:none}ul.__irx.context-menu-list{margin:0;padding:2px;min-width:120px;max-width:250px;display:none;position:fixed;list-style-type:none;border:1px solid #979797;background:#f0f0f0;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);-moz-box-shadow:0 2px 5px rgba(0,0,0,.5);-ms-box-shadow:0 2px 5px rgba(0,0,0,.5);-o-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);font-family:Dotum,Arial,Helvetica,sans-serif;font-size:12px;line-height:20px;color:#333;z-index:102}ul.__irx.context-menu-list li.context-menu-item{cursor:pointer;padding:2px 12px;background-color:#ebf0f6;position:relative;-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none;border:1px solid #f0f0f0}ul.__irx.context-menu-list li:hover{border:1px solid #aecff7}.loading-layout{width:100%;height:100%;background:rgba(80,80,80,.2);display:none}.loading-layout-file-processing{width:100%;height:100%;background:rgba(80,80,80,.2);display:none}.sk-fading-circle{margin:auto;width:40px;height:40px;position:absolute;left:0;right:0;top:0;bottom:0;overflow:hidden}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:'';display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-.7s;animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-.6s;animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-.5s;animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-.3s;animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-.2s;animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-.1s;animation-delay:-.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}.tree-icon.directory{background:url(icon/directory.png) left top no-repeat}.tree-icon.directory.open{background:url(icon/folder_open.png) left top no-repeat}.tree-icon.expanded{background:url(icon/folder_open.png) left top no-repeat}.tree-icon.wait{background:url(icon/spinner.gif) left top no-repeat}.tree-icon.file-icon{background:url(icon/file.png) left top no-repeat}.tree-icon.file-icon.ext_3gp{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_afp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_afpa{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_asp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_aspx{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_avi{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_bat{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_bmp{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_c{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_cfm{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_cgi{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_com{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_cpp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_css{background:url(icon/css.png) left top no-repeat}.tree-icon.file-icon.ext_doc{background:url(icon/doc.png) left top no-repeat}.tree-icon.file-icon.ext_docx{background:url(icon/doc.png) left top no-repeat}.tree-icon.file-icon.ext_exe{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_gif{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_fla{background:url(icon/flash.png) left top no-repeat}.tree-icon.file-icon.ext_h{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_htm{background:url(icon/html.png) left top no-repeat}.tree-icon.file-icon.ext_html{background:url(icon/html.png) left top no-repeat}.tree-icon.file-icon.ext_jar{background:url(icon/java.png) left top no-repeat}.tree-icon.file-icon.ext_jpg{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_jpeg{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_js{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_lasso{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_log{background:url(icon/txt.png) left top no-repeat}.tree-icon.file-icon.ext_m4p{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_mov{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mp3{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_mp4{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mpg{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mpeg{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_ogg{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_pcx{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_pdf{background:url(icon/pdf.png) left top no-repeat}.tree-icon.file-icon.ext_php{background:url(icon/php.png) left top no-repeat}.tree-icon.file-icon.ext_png{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_ppt{background:url(icon/ppt.png) left top no-repeat}.tree-icon.file-icon.ext_pptx{background:url(icon/ppt.png) left top no-repeat}.tree-icon.file-icon.ext_psd{background:url(icon/psd.png) left top no-repeat}.tree-icon.file-icon.ext_pl{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_py{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_rb{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rbx{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rhtml{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rpm{background:url(icon/linux.png) left top no-repeat}.tree-icon.file-icon.ext_ruby{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_sql{background:url(icon/db.png) left top no-repeat}.tree-icon.file-icon.ext_swf{background:url(icon/flash.png) left top no-repeat}.tree-icon.file-icon.ext_tif{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_tiff{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_txt{background:url(icon/txt.png) left top no-repeat}.tree-icon.file-icon.ext_vb{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_wav{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_wmv{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_xls{background:url(icon/xls.png) left top no-repeat}.tree-icon.file-icon.ext_xlsx{background:url(icon/xls.png) left top no-repeat}.tree-icon.file-icon.ext_xml{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_zip{background:url(icon/zip.png) left top no-repeat}.tree-icon.file-icon.ext_directory{background:url(icon/directory.png) left top no-repeat}.tree-icon.file-icon.ext_ms4{background:url(icon/ms4.png) left top no-repeat}.innorix_base,.innorix_basic,.innorix_compact,.innorix_input,.innorix_tester,.irx_messageBox,.irx_transferWin{font-family:'Segoe UI',arial,'돋움',Dotum,'Apple SD Gothic Neo',AppleSDGothicNeo,sans-serif}.innorix_base ol,.innorix_base ul,.innorix_basic ol,.innorix_basic ul,.innorix_compact ol,.innorix_compact ul,.innorix_input ol,.innorix_input ul,.innorix_tester ol,.innorix_tester ul,.irx_messageBox ol,.irx_messageBox ul,.irx_transferWin ol,.irx_transferWin ul{list-style:none;margin:0;padding:0}.innorix_base button,.innorix_basic button,.innorix_compact button,.innorix_input button,.innorix_tester button,.irx_messageBox button,.irx_transferWin button{outline:0;cursor:pointer;margin:0;padding:0}.innorix_base blockquote,.innorix_base q,.innorix_basic blockquote,.innorix_basic q,.innorix_compact blockquote,.innorix_compact q,.innorix_input blockquote,.innorix_input q,.innorix_tester blockquote,.innorix_tester q,.irx_messageBox blockquote,.irx_messageBox q,.irx_transferWin blockquote,.irx_transferWin q{quotes:none}.innorix_compact{border:2px solid #13a097;overflow:hidden;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;color:#111;padding:0;font-size:12px;position:relative}.innorix_compact .irx_inner{background:#fff;border:2px solid #13a097}.innorix_compact .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#13a097}.innorix_compact .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#888}.innorix_compact .irx_inner .irx_listGrid_wrap{border-left:2px solid #ccc}.innorix_compact .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_compact .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#13a097;color:#fff}.innorix_compact .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#ebebeb}.innorix_compact .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#d9d9d9}.innorix_compact .irx_inner._irx_dragging{border:2px solid #295388}.innorix_compact .irx_inner .irx_empty{color:#aaa}.innorix_compact.irx_theme_blood{color:#000}.innorix_compact.irx_theme_blood .irx_inner{background:red;border:2px solid #8b2b3b}.innorix_compact.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#175676}.innorix_compact.irx_theme_blood .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:maroon}.innorix_compact.irx_theme_blood .irx_inner .irx_listGrid_wrap{border-left:2px solid #900}.innorix_compact.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_compact.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#175676;color:red}.innorix_compact.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#d60000}.innorix_compact.irx_theme_blood .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#b30000}.innorix_compact.irx_theme_blood .irx_inner._irx_dragging{border:2px solid #000}.innorix_compact.irx_theme_blood .irx_inner .irx_empty{color:#aaa}.innorix_compact.irx_theme_darker-than-black{color:#aaa}.innorix_compact.irx_theme_darker-than-black .irx_inner{background:#333;border:2px solid #333}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#ccc}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#6f6f6f}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap{border-left:2px solid #404040}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#ccc;color:#333}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#454545}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#262626}.innorix_compact.irx_theme_darker-than-black .irx_inner._irx_dragging{border:2px solid #ff7518}.innorix_compact.irx_theme_darker-than-black .irx_inner .irx_empty{color:#aaa}.innorix_compact.irx_theme_boombaya{color:#eee5e9}.innorix_compact.irx_theme_boombaya .irx_inner{background:#492c1d;border:2px solid #492c1d}.innorix_compact.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_size{color:#66b3ba}.innorix_compact.irx_theme_boombaya .irx_inner .irx_contents .irx_infoBox .irx_top .irx_unit{color:#9c8983}.innorix_compact.irx_theme_boombaya .irx_inner .irx_listGrid_wrap{border-left:2px solid #5b3724}.innorix_compact.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li{cursor:pointer}.innorix_compact.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li .irx_remove{background:#66b3ba;color:#492c1d}.innorix_compact.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.irx_odd{background:#633b27}.innorix_compact.irx_theme_boombaya .irx_inner .irx_listGrid_wrap .irx_listGrid li.selected{background:#372116}.innorix_compact.irx_theme_boombaya .irx_inner._irx_dragging{border:2px solid #66b3ba}.innorix_compact.irx_theme_boombaya .irx_inner .irx_empty{color:#aaa}.innorix_compact._irx_dragging{border:2px solid #81c7fc}.innorix_compact div{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important;position:static;white-space:normal;overflow:visible}.innorix_compact div.irx_filetree.empty-uploader{background:url(img/dropzone.png) no-repeat center center;background-color:#fff}.innorix_compact div.irx_filetree.empty-downloader{background-color:#fff}.innorix_compact div.irx_filetree .irx-empty-download-text{color:#6c6c6c;position:absolute;margin:0;top:46%;width:100%;text-align:center;font-size:25px}.innorix_compact div.irx_filetree{width:550px;height:200px;position:relative;border-right:1px solid #dcdcdc;background:#fff;overflow:hidden;overflow-y:auto;float:left}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #efefef;padding:5px;padding-left:5px;height:20px;background-color:#fff}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div{float:left}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) -20px 0}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.tree-icon{width:18px;height:18px;margin-left:4px;margin-top:2px}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filename{margin-top:1px;margin-left:2px;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;height:18px;line-height:18px}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filesize{color:#757575;margin-left:10px;margin-top:1px;vertical-align:middle;height:18px;line-height:18px}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filestatus{float:right;clear:both;padding:0;margin:0;margin-top:-20px;vertical-align:middle;height:18px;line-height:18px;display:none}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group{float:right;clear:both;padding:0;margin:0;margin-top:-20px;display:none;text-align:right}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_move{position:absolute;margin-left:-50px;margin-top:2px;width:16px;height:16px;cursor:default;background:url(img/move-blue.png) no-repeat}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_del{position:absolute;margin-left:-30px;margin-top:3px;width:15px;height:15px;cursor:pointer;background:url(img/close-blue.png) no-repeat}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper:hover .btn-group{display:block}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.is-removed>div.irx-file-inner-wrapper{color:#aaa}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper{background-color:#0c93dd;color:#fff;border-bottom:1px solid #0c93dd}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.filesize{color:#fff}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) 0 0}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.btn-group span.irx_btn_move{background:url(img/move-white.png) no-repeat}.innorix_compact div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.btn-group span.irx_btn_del{background:url(img/close-white.png) no-repeat}.innorix_compact div.irx_infoBox{background:#fafafa}.innorix_compact div.irx_infoBox div.irx-chart-wrapper{position:relative;width:138px;float:left;height:180px;padding:10px}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-canvas-wrapper canvas.irx-chart-canvas{margin-top:5px}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size.file-select{height:50px;padding-top:0}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size{height:43px;padding-top:7px;text-align:center;margin-top:-88px;width:100%}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.selected-file-size{color:#2297c7;font-size:14pt;height:23px}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.total-file-size{color:#757575;font-size:12px;border-top:0 solid #d8d8d8;width:100%;margin:auto}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-size div.topBorder{border-top:1px solid #d8d8d8;width:30%;margin:auto}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-file-count{color:#757575;text-align:center;margin-top:45px;width:100%;font-size:12.5px;line-height:15px}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;right:10px;width:15px;height:15px;cursor:pointer}.innorix_compact div.irx_infoBox div.irx-chart-wrapper div.irx-chart-btn-group div.irx-chart-toggle{position:absolute;width:15px;height:15px;opacity:0;background:url(img/close-gray.png) no-repeat}.innorix_compact div.irx_infoBox div.irx-preview-wrapper{position:relative;width:138px;float:left;height:180px;padding:10px;display:none;background:#fff}.innorix_compact div.irx_infoBox div.irx-preview-wrapper div.irx-preview-element{width:100%;height:calc(100% - 30px);overflow:hidden}.innorix_compact div.irx_infoBox div.irx-preview-wrapper div.irx-preview-element img.irx-preview-image{width:100%;height:auto}.innorix_compact div.irx_infoBox div.irx-preview-wrapper div.irx-preview-element iframe.irx-preview-pdf{width:158px;height:177px;overflow:hidden!important;overflow-x:hidden!important;overflow-y:hidden!important}.innorix_compact div.irx_infoBox div.irx-preview-wrapper div.irx-preview-file-size{height:15px;padding-top:7px;text-align:center;margin-top:-5px;width:100%;color:#2297c7}.innorix_compact div.irx_infoBox div.irx-preview-wrapper div.irx-preview-file-name{color:#2297c7;text-align:center;margin-top:2px;width:138px;font-size:12.5px;line-height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.innorix_compact div.irx_infoBox div.irx-preview-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;right:10px;width:15px;height:15px;cursor:pointer}.innorix_compact div.irx_infoBox div.irx-preview-wrapper div.irx-chart-btn-group div.irx-chart-toggle{position:absolute;width:15px;height:15px;opacity:0;background:url(img/close-gray.png) no-repeat}.innorix_compact div.irx_infoBox div.irx-mass-wrapper{position:absolute;width:100%;float:left;height:180px;padding:10px;display:none;background-color:#fff;font-family:Helvetica,sans-serif}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-canvas-wrapper canvas.irx-chart-canvas{margin-top:5px}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-title{padding-top:7px;text-align:center;margin-top:10px;color:#002060;font-size:22px;font-weight:700}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-content{padding-top:7px;text-align:center;color:#002060;font-size:18px;font-weight:700}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-size{padding-top:7px;text-align:center;margin-top:50px;width:100%;font-size:16px;font-weight:700;color:#002060}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-size span.massFileNumber{color:#00b0f0;font-size:24px;height:23px;font-weight:700}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-mass-file-size span.massFileText{color:#002060;font-size:16px;font-weight:700}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group{position:absolute;overflow:hidden;top:0;right:16px;width:28px;height:28px;cursor:pointer;font-size:28px;font-weight:700}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group div.irx-mass-toggle{color:#aaafb1}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-chart-btn-group div.irx-mass-toggle:hover{color:#002060}.innorix_compact div.irx_infoBox div.irx-mass-wrapper div.irx-mass-wrapper-paper-image{background:url(img/paper-plane.png) left top no-repeat;width:152px;height:79px;background-size:152px 79px;position:absolute;right:46px;top:27px;margin:auto}.innorix_compact.chart-hide div.irx_filetree{min-width:100%}.innorix_compact.chart-hide div.irx-chart-wrapper{display:none}.innorix_basic.preview-show div.irx_filetree{min-width:0;width:calc(100% - 160px)}.innorix_basic.preview-show div.irx-preview-wrapper{display:block!important}.innorix_basic.preview-show div.irx-file-header-list{width:calc(100% - 160px)}.innorix_basic.preview-show div.irx-chart-wrapper{display:none}.__irx.context-menu-layer{position:fixed;z-index:101;top:0;left:0;opacity:0;background-color:#000;height:100vw;width:100vw;display:none;display:none}ul.__irx.context-menu-list{margin:0;padding:2px;min-width:120px;max-width:250px;display:none;position:fixed;list-style-type:none;border:1px solid #979797;background:#f0f0f0;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);-moz-box-shadow:0 2px 5px rgba(0,0,0,.5);-ms-box-shadow:0 2px 5px rgba(0,0,0,.5);-o-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);font-family:Dotum,Arial,Helvetica,sans-serif;font-size:12px;line-height:20px;color:#333;z-index:102}ul.__irx.context-menu-list li.context-menu-item{cursor:pointer;padding:2px 12px;background-color:#ebf0f6;position:relative;-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none;border:1px solid #f0f0f0}ul.__irx.context-menu-list li:hover{border:1px solid #aecff7}.loading-layout{width:100%;height:100%;background:rgba(80,80,80,.2);display:none}.loading-layout-file-processing{width:100%;height:100%;background:rgba(80,80,80,.2);display:none}.sk-fading-circle{margin:auto;width:40px;height:40px;position:absolute;left:0;right:0;top:0;bottom:0;overflow:hidden}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:'';display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-.9s;animation-delay:-.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-.7s;animation-delay:-.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-.6s;animation-delay:-.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-.5s;animation-delay:-.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-.3s;animation-delay:-.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-.2s;animation-delay:-.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-.1s;animation-delay:-.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}.tree-icon.directory{background:url(icon/directory.png) left top no-repeat}.tree-icon.directory.open{background:url(icon/folder_open.png) left top no-repeat}.tree-icon.expanded{background:url(icon/folder_open.png) left top no-repeat}.tree-icon.wait{background:url(icon/spinner.gif) left top no-repeat}.tree-icon.file-icon{background:url(icon/file.png) left top no-repeat}.tree-icon.file-icon.ext_3gp{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_afp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_afpa{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_asp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_aspx{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_avi{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_bat{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_bmp{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_c{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_cfm{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_cgi{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_com{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_cpp{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_css{background:url(icon/css.png) left top no-repeat}.tree-icon.file-icon.ext_doc{background:url(icon/doc.png) left top no-repeat}.tree-icon.file-icon.ext_docx{background:url(icon/doc.png) left top no-repeat}.tree-icon.file-icon.ext_exe{background:url(icon/application.png) left top no-repeat}.tree-icon.file-icon.ext_gif{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_fla{background:url(icon/flash.png) left top no-repeat}.tree-icon.file-icon.ext_h{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_htm{background:url(icon/html.png) left top no-repeat}.tree-icon.file-icon.ext_html{background:url(icon/html.png) left top no-repeat}.tree-icon.file-icon.ext_jar{background:url(icon/java.png) left top no-repeat}.tree-icon.file-icon.ext_jpg{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_jpeg{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_js{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_lasso{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_log{background:url(icon/txt.png) left top no-repeat}.tree-icon.file-icon.ext_m4p{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_mov{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mp3{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_mp4{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mpg{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_mpeg{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_ogg{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_pcx{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_pdf{background:url(icon/pdf.png) left top no-repeat}.tree-icon.file-icon.ext_php{background:url(icon/php.png) left top no-repeat}.tree-icon.file-icon.ext_png{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_ppt{background:url(icon/ppt.png) left top no-repeat}.tree-icon.file-icon.ext_pptx{background:url(icon/ppt.png) left top no-repeat}.tree-icon.file-icon.ext_psd{background:url(icon/psd.png) left top no-repeat}.tree-icon.file-icon.ext_pl{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_py{background:url(icon/script.png) left top no-repeat}.tree-icon.file-icon.ext_rb{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rbx{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rhtml{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_rpm{background:url(icon/linux.png) left top no-repeat}.tree-icon.file-icon.ext_ruby{background:url(icon/ruby.png) left top no-repeat}.tree-icon.file-icon.ext_sql{background:url(icon/db.png) left top no-repeat}.tree-icon.file-icon.ext_swf{background:url(icon/flash.png) left top no-repeat}.tree-icon.file-icon.ext_tif{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_tiff{background:url(icon/picture.png) left top no-repeat}.tree-icon.file-icon.ext_txt{background:url(icon/txt.png) left top no-repeat}.tree-icon.file-icon.ext_vb{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_wav{background:url(icon/music.png) left top no-repeat}.tree-icon.file-icon.ext_wmv{background:url(icon/film.png) left top no-repeat}.tree-icon.file-icon.ext_xls{background:url(icon/xls.png) left top no-repeat}.tree-icon.file-icon.ext_xlsx{background:url(icon/xls.png) left top no-repeat}.tree-icon.file-icon.ext_xml{background:url(icon/code.png) left top no-repeat}.tree-icon.file-icon.ext_zip{background:url(icon/zip.png) left top no-repeat}.tree-icon.file-icon.ext_directory{background:url(icon/directory.png) left top no-repeat}.tree-icon.file-icon.ext_ms4{background:url(icon/ms4.png) left top no-repeat}.innorix_base,.innorix_basic,.innorix_compact,.innorix_input,.innorix_tester,.irx_messageBox,.irx_transferWin{font-family:'Segoe UI',arial,'돋움',Dotum,'Apple SD Gothic Neo',AppleSDGothicNeo,sans-serif}.innorix_base ol,.innorix_base ul,.innorix_basic ol,.innorix_basic ul,.innorix_compact ol,.innorix_compact ul,.innorix_input ol,.innorix_input ul,.innorix_tester ol,.innorix_tester ul,.irx_messageBox ol,.irx_messageBox ul,.irx_transferWin ol,.irx_transferWin ul{list-style:none;margin:0;padding:0}.innorix_base button,.innorix_basic button,.innorix_compact button,.innorix_input button,.innorix_tester button,.irx_messageBox button,.irx_transferWin button{outline:0;cursor:pointer;margin:0;padding:0}.innorix_base blockquote,.innorix_base q,.innorix_basic blockquote,.innorix_basic q,.innorix_compact blockquote,.innorix_compact q,.innorix_input blockquote,.innorix_input q,.innorix_tester blockquote,.innorix_tester q,.irx_messageBox blockquote,.irx_messageBox q,.irx_transferWin blockquote,.irx_transferWin q{quotes:none}.irx_transferWin_wrapper{background:0 0;position:fixed;*position:absolute;top:0;left:0;width:100%;height:100%;z-index:9999;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.irx_transferWin_wrapper div{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important;overflow:visible;white-space:normal}.irx_transferWin.show-graph .irx_container .irx_graph_wrapper{display:block}.irx_transferWin.show-graph{height:281px}.irx_transferWin.show-qr .irx_container .irx_qr_wrapper{display:block}.irx_transferWin.show-qr{height:281px}.irx_transferWin{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:-moz-none;-o-user-select:none;user-select:none;width:500px;height:180px;background:#f5f5f5;color:#646464;font-size:12px;position:absolute;top:50%;left:50%;margin-top:-90px;margin-left:-250px;box-shadow:0 0 5px 2px #999;border:none}.irx_transferWin .irx_header{background:#53595f;color:#fff;height:35px;line-height:35px;padding-left:10px;position:static}.irx_transferWin .irx_header .irx_close{background:url(img/innorix_trnWindow_btn_close.png);border:0;width:35px;height:35px;text-indent:-9999px;float:right;overflow:hidden}.irx_transferWin .irx_container{border:1px solid #53595f;border-top:0;padding-top:20px;height:125px;position:static}.irx_transferWin .irx_container .irx_folderPath_wrapper,.irx_transferWin .irx_container .irx_indicator,.irx_transferWin .irx_container .irx_progress{margin-left:20px;position:static}.irx_transferWin .irx_container .irx_folderPath_wrapper .irx_folderPath,.irx_transferWin .irx_container .irx_indicator .irx_folderPath,.irx_transferWin .irx_container .irx_progress .irx_folderPath{width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.irx_transferWin .irx_container .irx_center{margin-right:20px}.irx_transferWin .irx_container .irx_center .irx_status{margin-left:20px;text-align:left}.irx_transferWin .irx_container .irx_speed_light{height:6px}.irx_transferWin .irx_container .irx_speed_light .irx_speed1,.irx_transferWin .irx_container .irx_speed_light .irx_speed2,.irx_transferWin .irx_container .irx_speed_light .irx_speed3{float:left;background:url(img/innorix_trnWindow_speed_colors.gif);display:block;width:6px;height:6px;margin-right:2px}.irx_transferWin .irx_container .irx_speed_light .innorix_on.irx_speed1,.irx_transferWin .irx_container .irx_speed_light .innorix_on.irx_speed2,.irx_transferWin .irx_container .irx_speed_light .innorix_on.irx_speed3{background-position:0 -30px}.irx_transferWin .irx_container .irx_speed_light .irx_speed1{background-position:0 0}.irx_transferWin .irx_container .irx_speed_light .irx_speed2{background-position:0 -10px}.irx_transferWin .irx_container .irx_speed_light .irx_speed3{background-position:0 -20px}.irx_transferWin .irx_container .irx_validate_progress_server{position:absolute;width:0%;background:#5fb321;top:63px;left:21px;height:3px}.irx_transferWin .irx_container .irx_progress{margin-top:5px;position:relative;width:458px;height:30px;background:#c9cfd6}.irx_thumb_progress .irx_transferWin .irx_container .irx_progress .irx_thumb_progressBar,.irx_transferWin .irx_container .irx_progress .irx_progressBar,.irx_transferWin .irx_container .irx_progress .irx_progressStr_left,.irx_transferWin .irx_container .irx_progress .irx_progressStr_right,.irx_transferWin .irx_container .irx_progress .irx_thumb_progress .irx_thumb_progressBar{position:absolute;width:438px;height:30px}.irx_transferWin .irx_container .irx_progress .irx_progressStr_left,.irx_transferWin .irx_container .irx_progress .irx_progressStr_right{text-align:left;line-height:30px;left:10px}.irx_transferWin .irx_container .irx_progress .irx_progressStr_right{text-align:right}.irx_transferWin .irx_container .irx_progress .irx_progressBar{width:0;background:#0c93dd;overflow:hidden}.irx_transferWin .irx_container .irx_progress .irx_progressBar>.irx_progressStr_left,.irx_transferWin .irx_container .irx_progress .irx_progressBar>.irx_progressStr_right{color:#fff}.irx_transferWin .irx_container .irx_progress .irx_progressBar .irx_validate_progress{position:absolute;width:0%;background:#5fb321;top:26px;height:3px}.irx_transferWin .irx_container .irx_center .irx_btnGroup .enable,.irx_transferWin .irx_container .irx_center .irx_qr_code,.irx_transferWin .irx_container .irx_center .irx_toggle_graph,.irx_transferWin .irx_container .irx_center .irx_trn_status,.irx_transferWin .irx_container .irx_folderPath .irx_folderDialog{text-indent:-9999px;overflow:hidden;background:url(img/innorix_trnWindow_icons.gif);width:18px;height:18px;margin-right:3px;border:0;vertical-align:middle}.irx_transferWin .irx_container .irx_center{margin-top:10px;height:18px;position:relative}.irx_transferWin .irx_container .irx_center .irx_btnGroup{position:absolute;top:0;right:0}.irx_transferWin .irx_container .irx_center .irx_controller{background:#4aa3df;color:#fff;border:0;width:80px;height:25px;vertical-align:middle;font-size:12px}.irx_transferWin .irx_container .irx_center .irx_controller.irx_on{background:#8bc4ea}.irx_transferWin .irx_container .irx_center .irx_toggle_graph{background:url(img/wp_graph.png)}.irx_transferWin .irx_container .irx_center .irx_trn_status{background-position:-36px -18px}.irx_transferWin .irx_container .irx_center .irx_trn_status.irx_warn{background-position:-18px -18px}.irx_transferWin .irx_container .irx_center .irx_trn_status.irx_error{background-position:0 -18px}.irx_transferWin .irx_container .irx_center .irx_qr_code{background:url(img/qrcode2.png);display:none}.irx_transferWin .irx_container .irx_center .irx_btnGroup .enable{background:url(img/qrcode1.png)}.irx_transferWin .irx_container .irx_folderPath_wrapper{height:20px}.irx_transferWin .irx_container .irx_folderPath .irx_folderDialog{background-position:-36px 0}.irx_transferWin .irx_container .irx_folderPath .irx_folderPath_str{margin:0 10px;vertical-align:middle;cursor:pointer}.irx_transferWin .irx_container .irx_bottom{position:absolute;top:155px;left:20px;color:#b6b6b6;font-size:11px}.irx_transferWin .irx_container .irx_bottom_policy{margin-left:20px;display:none}.irx_transferWin .irx_container .irx_bottom_policy input[type=checkbox]{position:relative;top:2px}.irx_transferWin .irx_container .irx_trn_graph{background:url(img/innorix_devTool_graph_close_btn.png)}.irx_transferWin .irx_container .irx_graph_wrapper{display:none;position:relative;width:100%;border:1px solid #53595f;border-top:1px solid #b4b5b5;background:url(img/innorix_trnWindow_graph_bg.png);height:100px;color:#b6b6b6;font-size:11px;overflow:hidden;margin-top:36px;margin-left:-1px;box-shadow:0 3px 5px 2px #999}.irx_transferWin .irx_container .irx_qr_wrapper{display:none;position:relative;width:100%;border:1px solid #53595f;border-top:1px solid #b4b5b5;background-color:#f9f9f7;height:165px;color:#b6b6b6;font-size:11px;overflow:hidden;margin-top:36px;margin-left:-1px;box-shadow:0 3px 5px 2px #999}.irx_transferWin .irx_container .irx_qr_wrapper .gplayLogo{background:url(img/google.png) no-repeat;background-size:25%;background-color:#f9f9f7;height:48px;margin-top:30px;margin-left:20px;display:none}.irx_transferWin .irx_container .irx_qr_wrapper .desc{color:#646464;font-size:12px;margin-left:20px;width:250px;display:none}.irx_transferWin .irx_container .irx_qr_wrapper .qr_code img{position:absolute;top:15px;padding:3px;left:0;right:0;margin:auto}.irx_transferWin .irx_container .irx_graph_wrapper .innorix_avg_trn_rate,.irx_transferWin .irx_container .irx_graph_wrapper .innorix_trn_rate{position:absolute;height:80px;top:20px;width:100%}.irx_transferWin .irx_container .irx_avg_trn_rate_txt{position:absolute;left:20px;top:30px;color:#323232;font-size:12px}.irx_transferWin .irx_container .innorix_jqstooltip{background-color:rgba(0,0,0,.6);-ms-filter:'progid:DXImageTransform.Microsoft.gradient(startColorstr=#80000000,endColorstr=#80000000)';filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#80000000');position:absolute;padding:5px;border:1px solid #fff;z-index:10000;white-space:nowrap;text-align:left;color:#fff;font:10px arial,san serif}.irx_transferWin div.irx_filetree.empty-uploader{background:url(img/dropzone.png) no-repeat center center;background-color:#fff}.irx_transferWin div.irx_filetree.empty-downloader{background-color:#fff}.irx_transferWin div.irx_filetree .irx-empty-download-text{color:#6c6c6c;position:absolute;margin:0;top:46%;width:100%;text-align:center;font-size:25px}.irx_transferWin div.irx_filetree{width:454px;height:140px;border:2px solid #13a097;margin-top:10px;margin-bottom:10px;position:relative;left:20px;right:0;background:#fff;overflow:hidden;overflow-y:auto;display:none}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #efefef;padding:5px;padding-left:5px;height:20px;background-color:#fff}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div{float:left}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) -20px 0}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.tree-icon{width:18px;height:18px;margin-left:4px;margin-top:2px}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filename{margin-top:1px;margin-left:2px;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;height:18px;line-height:18px}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filesize{color:#757575;margin-left:10px;margin-top:1px;vertical-align:middle;height:18px;line-height:18px}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.filestatus{float:right;clear:both;padding:0;margin:0;margin-top:-20px;vertical-align:middle;height:18px;line-height:18px}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group{float:right;clear:both;padding:0;margin:0;margin-top:-20px;display:none;text-align:right}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_move{position:absolute;margin-left:-50px;margin-top:2px;width:16px;height:16px;cursor:default;background:url(img/move-blue.png) no-repeat}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper div.btn-group span.irx_btn_del{position:absolute;margin-left:-30px;margin-top:3px;width:15px;height:15px;cursor:pointer;background:url(img/close-blue.png) no-repeat}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper div.irx-file-inner-wrapper:hover .btn-group{display:none}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.is-removed>div.irx-file-inner-wrapper{color:#aaa}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper{background-color:#0c93dd;color:#fff;border-bottom:1px solid #0c93dd}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.filesize{color:#fff}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.filetree-checkbox{background:url(img/innorix_control_list_checkbox.png) 0 0}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.btn-group span.irx_btn_move{background:url(img/move-white.png) no-repeat}.irx_transferWin div.irx_filetree ul.irx_filetree_list li.irx-file-wrapper.selected>div.irx-file-inner-wrapper div.btn-group span.irx_btn_del{background:url(img/close-white.png) no-repeat}.irx_transferWin div.irx_filetree ul.irx_filetree_list .filetree-checkbox{display:none}.irx_transferWin div.irx_filetree ul.irx_filetree_list .btn-group{display:none}.transferCompact{margin-top:0!important;height:335px!important}.transferCompact>.irx_container{height:280px!important}.transferCompact>.irx_container>.irx_bottom{top:310px!important}.transferCompact>.irx_container>.irx_graph_wrapper{margin-top:27px!important}.transferCompact>.irx_container>.irx_folderPath_wrapper>.irx_folderPath{position:relative!important;top:-248px!important}.transferCompact>.irx_container>.irx_validate_progress_server{top:227px!important}.transferCompactP{margin-top:0!important;height:365px!important}.transferCompactP>.irx_container{height:310px!important}.transferCompactP>.irx_container>.irx_bottom{top:340px!important}.transferCompactP>.irx_container>.irx_graph_wrapper{margin-top:38px!important}.transferCompactP>.irx_container>.irx_folderPath_wrapper>.irx_folderPath{position:relative!important;top:-248px!important}.transferCompactP>.irx_container>.irx_validate_progress_server{top:227px!important}.irx_thumb_progress{position:absolute;top:50%;left:50%;margin-top:-90px;margin-left:-150px;width:258px;height:15px;background:#c9cfd6;border-radius:5px}.irx_thumb_progress .irx_thumb_progressBar,.irx_thumb_progress .irx_transferWin .irx_container .irx_progress .irx_progressBar,.irx_thumb_progress .irx_transferWin .irx_container .irx_progress .irx_progressStr_left,.irx_thumb_progress .irx_transferWin .irx_container .irx_progress .irx_progressStr_right,.irx_transferWin .irx_container .irx_progress .irx_thumb_progress .irx_progressBar,.irx_transferWin .irx_container .irx_progress .irx_thumb_progress .irx_progressStr_left,.irx_transferWin .irx_container .irx_progress .irx_thumb_progress .irx_progressStr_right{position:absolute;width:238px;height:15px}.irx_thumb_progress .irx_thumb_progressBar{border-radius:5px;width:0;background:#0c93dd;overflow:hidden}.innorix_base,.innorix_basic,.innorix_compact,.innorix_input,.innorix_tester,.irx_messageBox,.irx_transferWin{font-family:'Segoe UI',arial,'돋움',Dotum,'Apple SD Gothic Neo',AppleSDGothicNeo,sans-serif}.innorix_base ol,.innorix_base ul,.innorix_basic ol,.innorix_basic ul,.innorix_compact ol,.innorix_compact ul,.innorix_input ol,.innorix_input ul,.innorix_tester ol,.innorix_tester ul,.irx_messageBox ol,.irx_messageBox ul,.irx_transferWin ol,.irx_transferWin ul{list-style:none;margin:0;padding:0}.innorix_base button,.innorix_basic button,.innorix_compact button,.innorix_input button,.innorix_tester button,.irx_messageBox button,.irx_transferWin button{outline:0;cursor:pointer;margin:0;padding:0}.innorix_base blockquote,.innorix_base q,.innorix_basic blockquote,.innorix_basic q,.innorix_compact blockquote,.innorix_compact q,.innorix_input blockquote,.innorix_input q,.innorix_tester blockquote,.innorix_tester q,.irx_messageBox blockquote,.irx_messageBox q,.irx_transferWin blockquote,.irx_transferWin q{quotes:none}.irx_messageBox_wrapper{background:0 0;position:fixed;*position:absolute;top:0;left:0;width:100%;height:100%;z-index:99999}.irx_messageBox{position:absolute;left:50%;width:300px;margin-left:-150px;top:50%;height:30px;margin-top:-15px;background:#282a36;border-radius:8px;text-align:center;line-height:30px;font-size:11px;color:#fff} \ No newline at end of file diff --git a/src/main/webapp/innorix/innorix.js b/src/main/webapp/innorix/innorix.js new file mode 100644 index 00000000..e131f60f --- /dev/null +++ b/src/main/webapp/innorix/innorix.js @@ -0,0 +1,47 @@ +/* + * innorix-wp9 1.0.0 + * INNORIX Transfer solution + * Wed, 18 May 2022 09:39:57 GMT + * + * Copyright (C) INNORIX / innorix-dev-team, http://innorix.com + */ + +// 라이선스 유형 : INNORIX WP 91일 체험 (만료 2022-09-30) +var INNORIX_LICENSE = "WEiCgfGkBpqQN/Zw0Ae0YQDFQoK5vit/hNZK/8gGNUm+mtjwAJr4dLSFCiLgiY9BOWSg925hgOfaW1olUgUTccrrl6Y="; + +var INNORIX_VERSION = '1.1.3.458'; +var INNORIX_WIN_VERSION = '1.1.3.458'; +var INNORIX_MAC_VERSION = '1.1.3.458'; +var INNORIX_LINUX_VERSION = '1.1.3.458'; + +var innorix_install_retry_count = 3; + +!function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function i(t){var e=!!t&&"length"in t&&t.length,i=pt.type(t);return"function"!==i&&!pt.isWindow(t)&&("array"===i||0===e||"number"==typeof e&&e>0&&e-1 in t)}function n(t,e,i){if(pt.isFunction(e))return pt.grep(t,function(t,n){return!!e.call(t,n,t)!==i});if(e.nodeType)return pt.grep(t,function(t){return t===e!==i});if("string"==typeof e){if(St.test(e))return pt.filter(e,t,i);e=pt.filter(e,t)}return pt.grep(t,function(t){return pt.inArray(t,e)>-1!==i})}function o(t,e){do{t=t[e]}while(t&&1!==t.nodeType);return t}function r(t){var e={};return pt.each(t.match(Et)||[],function(t,i){e[i]=!0}),e}function s(){nt.addEventListener?(nt.removeEventListener("DOMContentLoaded",a),t.removeEventListener("load",a)):(nt.detachEvent("onreadystatechange",a),t.detachEvent("onload",a))}function a(){(nt.addEventListener||"load"===t.event.type||"complete"===nt.readyState)&&(s(),pt.ready())}function l(t,e,i){if(void 0===i&&1===t.nodeType){var n="data-"+e.replace(Nt,"-$1").toLowerCase();if("string"==typeof(i=t.getAttribute(n))){try{i="true"===i||"false"!==i&&("null"===i?null:+i+""===i?+i:Ot.test(i)?pt.parseJSON(i):i)}catch(ot){}pt.data(t,e,i)}else i=void 0}return i}function h(t){var e;for(e in t)if(("data"!==e||!pt.isEmptyObject(t[e]))&&"toJSON"!==e)return!1;return!0}function c(t,e,i,n){if(Rt(t)){var o,r,s=pt.expando,a=t.nodeType,l=a?pt.cache:t,h=a?t[s]:t[s]&&s;if(h&&l[h]&&(n||l[h].data)||void 0!==i||"string"!=typeof e)return h||(h=a?t[s]=it.pop()||pt.guid++:s),l[h]||(l[h]=a?{}:{toJSON:pt.noop}),"object"!=typeof e&&"function"!=typeof e||(n?l[h]=pt.extend(l[h],e):l[h].data=pt.extend(l[h].data,e)),r=l[h],n||(r.data||(r.data={}),r=r.data),void 0!==i&&(r[pt.camelCase(e)]=i),"string"==typeof e?null==(o=r[e])&&(o=r[pt.camelCase(e)]):o=r,o}}function u(t,e,i){if(Rt(t)){var n,o,r=t.nodeType,s=r?pt.cache:t,a=r?t[pt.expando]:pt.expando;if(s[a]){if(e&&(n=i?s[a]:s[a].data)){pt.isArray(e)?e=e.concat(pt.map(e,pt.camelCase)):e in n?e=[e]:(e=pt.camelCase(e),e=e in n?[e]:e.split(" ")),o=e.length;for(;o--;)delete n[e[o]];if(i?!h(n):!pt.isEmptyObject(n))return}(i||(delete s[a].data,h(s[a])))&&(r?pt.cleanData([t],!0):ut.deleteExpando||s!=s.window?delete s[a]:s[a]=void 0)}}}function d(t,e,i,n){var o,r=1,s=20,a=n?function(){return n.cur()}:function(){return pt.css(t,e,"")},l=a(),h=i&&i[3]||(pt.cssNumber[e]?"":"px"),c=(pt.cssNumber[e]||"px"!==h&&+l)&&Ft.exec(pt.css(t,e));if(c&&c[3]!==h){h=h||c[3],i=i||[],c=+l||1;do{r=r||".5",c/=r,pt.style(t,e,c+h)}while(r!==(r=a()/l)&&1!==r&&--s)}return i&&(c=+c||+l||0,o=i[1]?c+(i[1]+1)*i[2]:+i[2],n&&(n.unit=h,n.start=c,n.end=o)),o}function p(t){var e=Vt.split("|"),i=t.createDocumentFragment();if(i.createElement)for(;e.length;)i.createElement(e.pop());return i}function f(t,e){var i,n,o=0,r="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):void 0;if(!r)for(r=[],i=t.childNodes||t;null!=(n=i[o]);o++)!e||pt.nodeName(n,e)?r.push(n):pt.merge(r,f(n,e));return void 0===e||e&&pt.nodeName(t,e)?pt.merge([t],r):r}function g(t,e){for(var i,n=0;null!=(i=t[n]);n++)pt._data(i,"globalEval",!e||pt._data(e[n],"globalEval"))}function m(t){Ht.test(t.type)&&(t.defaultChecked=t.checked)}function v(t,e,i,n,o){for(var r,s,a,l,h,c,u,d=t.length,v=p(e),_=[],x=0;d>x;x++)if((s=t[x])||0===s)if("object"===pt.type(s))pt.merge(_,s.nodeType?[s]:s);else if(jt.test(s)){for(l=l||v.appendChild(e.createElement("div")),h=(Wt.exec(s)||["",""])[1].toLowerCase(),u=$t[h]||$t._default,l.innerHTML=u[1]+pt.htmlPrefilter(s)+u[2],r=u[0];r--;)l=l.lastChild;if(!ut.leadingWhitespace&&Ut.test(s)&&_.push(e.createTextNode(Ut.exec(s)[0])),!ut.tbody)for(s="table"!==h||qt.test(s)?""!==u[1]||qt.test(s)?0:l:l.firstChild,r=s&&s.childNodes.length;r--;)pt.nodeName(c=s.childNodes[r],"tbody")&&!c.childNodes.length&&s.removeChild(c);for(pt.merge(_,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=v.lastChild}else _.push(e.createTextNode(s));for(l&&v.removeChild(l),ut.appendChecked||pt.grep(f(_,"input"),m),x=0;s=_[x++];)if(n&&pt.inArray(s,n)>-1)o&&o.push(s);else if(a=pt.contains(s.ownerDocument,s),l=f(v.appendChild(s),"script"),a&&g(l),i)for(r=0;s=l[r++];)zt.test(s.type||"")&&i.push(s);return l=null,v}function _(){return!0}function x(){return!1}function y(){try{return nt.activeElement}catch(t){}}function b(t,e,i,n,o,r){var s,a;if("object"==typeof e){"string"!=typeof i&&(n=n||i,i=void 0);for(a in e)b(t,a,i,n,e[a],r);return t}if(null==n&&null==o?(o=i,n=i=void 0):null==o&&("string"==typeof i?(o=n,n=void 0):(o=n,n=i,i=void 0)),!1===o)o=x;else if(!o)return t;return 1===r&&(s=o,o=function(t){return pt().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=pt.guid++)),t.each(function(){pt.event.add(this,e,o,n,i)})}function w(t,e){return pt.nodeName(t,"table")&&pt.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function S(t){return t.type=(null!==pt.find.attr(t,"type"))+"/"+t.type,t}function C(t){var e=ne.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function T(t,e){if(1===e.nodeType&&pt.hasData(t)){var i,n,o,r=pt._data(t),s=pt._data(e,r),a=r.events;if(a){delete s.handle,s.events={};for(i in a)for(n=0,o=a[i].length;o>n;n++)pt.event.add(e,i,a[i][n])}s.data&&(s.data=pt.extend({},s.data))}}function k(t,e){var i,n,o;if(1===e.nodeType){if(i=e.nodeName.toLowerCase(),!ut.noCloneEvent&&e[pt.expando]){o=pt._data(e);for(n in o.events)pt.removeEvent(e,n,o.handle);e.removeAttribute(pt.expando)}"script"===i&&e.text!==t.text?(S(e).text=t.text,C(e)):"object"===i?(e.parentNode&&(e.outerHTML=t.outerHTML),ut.html5Clone&&t.innerHTML&&!pt.trim(e.innerHTML)&&(e.innerHTML=t.innerHTML)):"input"===i&&Ht.test(t.type)?(e.defaultChecked=e.checked=t.checked,e.value!==t.value&&(e.value=t.value)):"option"===i?e.defaultSelected=e.selected=t.defaultSelected:"input"!==i&&"textarea"!==i||(e.defaultValue=t.defaultValue)}}function D(t,e,i,n){e=rt.apply([],e);var o,r,s,a,l,h,c=0,u=t.length,d=u-1,p=e[0],g=pt.isFunction(p);if(g||u>1&&"string"==typeof p&&!ut.checkClone&&ie.test(p))return t.each(function(o){var r=t.eq(o);g&&(e[0]=p.call(this,o,r.html())),D(r,e,i,n)});if(u&&(h=v(e,t[0].ownerDocument,!1,t,n),o=h.firstChild,1===h.childNodes.length&&(h=o),o||n)){for(a=pt.map(f(h,"script"),S),s=a.length;u>c;c++)r=h,c!==d&&(r=pt.clone(r,!0,!0),s&&pt.merge(a,f(r,"script"))),i.call(t[c],r,c);if(s)for(l=a[a.length-1].ownerDocument,pt.map(a,C),c=0;s>c;c++)r=a[c],zt.test(r.type||"")&&!pt._data(r,"globalEval")&&pt.contains(l,r)&&(r.src?pt._evalUrl&&pt._evalUrl(r.src):pt.globalEval((r.text||r.textContent||r.innerHTML||"").replace(oe,"")));h=o=null}return t}function E(t,e,i){for(var n,o=e?pt.filter(e,t):t,r=0;null!=(n=o[r]);r++)i||1!==n.nodeType||pt.cleanData(f(n)),n.parentNode&&(i&&pt.contains(n.ownerDocument,n)&&g(f(n,"script")),n.parentNode.removeChild(n));return t}function I(t,e){var i=pt(e.createElement(t)).appendTo(e.body),n=pt.css(i[0],"display");return i.detach(),n}function A(t){var e=nt,i=le[t];return i||(i=I(t,e),"none"!==i&&i||(ae=(ae||pt("