fairnet/src/main/webapp/innorix_2/gnexam/hideServerPathInfo.jsp
2024-10-30 18:19:30 +09:00

71 lines
3.9 KiB
Plaintext

<%@ 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");
%>