+ * @Class Name : FileUploadController.java + * + * @Description : 파일 업로드를 처리하는 컨트롤러 + * + * + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021) + * + *+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 7. 15. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 7. 15. + * @version 1.0 + * + */ @Controller public class FileUploadController { - private final Logger log = LoggerFactory.getLogger(FileUploadController.class); + private static final Logger log = LoggerFactory.getLogger(FileUploadController.class); - @RequestMapping("/fileupload/uploadFile.do") - public String uploadFile(final MultipartHttpServletRequest multiRequest - , ModelMap model) throws Exception { + @Resource(name="nlibProperty") + NlibProperty nlibProperty; + + + /** + * 첨부파일이 저장되는 최상위 위치 + */ + @Value("#{properties['fileupload.base.path']}") + private String FILEUPLOAD_BASE_PATH; + + /** + * 첨부파일 임시 저장 위치 + */ + @Value("#{properties['fileupload.temp.subpath']}") + private String FILEUPLOAD_TEMP_SUBPATH; + + @ResponseBody + @RequestMapping(value="/fileupload/uploadFilesAjax.do", produces="application/json") + public ResponseEntity uploadFilesAjax( + final MultipartHttpServletRequest multiRequest + , @RequestParam("subPathKey") String subPathKey + , HttpServletResponse response) { - final Map
+ * @Class Name : FileUtil.java + * + * @Description : 파일 처리관련 유틸리티 기능 모음 클래스 + * + * + * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021) + * + *+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 7. 16. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 7. 16. + * @version 1.0 + * + */ +public class FileUtil extends EgovStringUtil { + + /** + * 경로나 파일명으로 적합한지를 판단한다. + * + * @param path + * @return 적합한 경우, true + */ + public static boolean isValid(String pathOrFilename) { + if(pathOrFilename == null || pathOrFilename.trim().length() == 0) return false; + + if(pathOrFilename.contains("..")) return false; + + return true; + } + + /** + * 경로나 파일명으로 적합한지를 판단한다. + * + * @param path + * @return 부적합한 경우, true + */ + public static boolean isNotValid(String pathOrFilename) { + return !isValid(pathOrFilename); + } + +} diff --git a/src/main/resources/nlib/nlib.properties b/src/main/resources/nlib/nlib.properties index 6a69e32b..dc0fd3be 100644 --- a/src/main/resources/nlib/nlib.properties +++ b/src/main/resources/nlib/nlib.properties @@ -33,3 +33,16 @@ dataapi.temp.xml.path = C:/iams/workspace/nlib/data/dataxml # Aria \uc54c\uace0\ub9ac\uc998 crypto.aria.defaultKey = TheFederationOfKoreaCultureCenter027042322 + +#---------------------------------------- +# \ucca8\ubd80\ud30c\uc77c \uacbd\ub85c \uc815\ubcf4 +#---------------------------------------- +# \ucca8\ubd80\ud30c\uc77c \ucd5c\uc0c1\uc704 \uc704\uce58 +fileupload.base.path = C:/iams/workspace/nlib/data/fileupload + +# \uc784\uc2dc \uc800\uc7a5 \uc704\uce58 +fileupload.temp.subpath = /temp + +# \ubb3b\uace0\ub2f5\ud558\uae30 \uac8c\uc2dc\ud310 \uc11c\ube0c\uc704\uce58 : \ucca8\ubd80\ud30c\uc77c \ucd5c\uc0c1\uc704 \uc704\uce58 \uc774\ud558\uc758 \uc704\uce58 \uc815\ubcf4\ub97c \uc124\uc815 +fileupload.bbs.qna.subpath = /bbs/qna + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/board/insertQnAForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/board/insertQnAForm.jsp index 8575fe2f..40f7b7fb 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/board/insertQnAForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/board/insertQnAForm.jsp @@ -30,17 +30,21 @@ <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +
| + | 내용 | +||
| 첨부파일 | @@ -72,19 +77,13 @@ onclick="javascript:fileUploadNow();" /> - - - - - -|||