From 8bf7d93ec01091aacb5e8270228d4e000df5c50e Mon Sep 17 00:00:00 2001 From: KNKIM Date: Mon, 2 Aug 2021 18:59:07 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C,=20=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/dataxml/uac.service.board.qna_GET.xml | 2 +- data/dataxml/uac.service.board.qna_PUT.xml | 6 + ...052436092_0A84FA72B1B1478ABEB285536B81B587 | Bin 0 -> 10519 bytes ...052436092_F1DB407F181A4B8AAA0859E56D4EDB57 | Bin 0 -> 10519 bytes ...052436092_F1F06656D13C451BA42E21B4028F3838 | Bin 0 -> 10519 bytes .../java/nlib/bbs/web/BoardController.java | 60 ++++- .../java/nlib/cmm/NlibCommonController.java | 4 +- .../nlib/cmm/fileupload/DownloadView.java | 72 ++++++ .../cmm/fileupload/FileUploadController.java | 22 +- .../nlib/security/SpringSecurityConfig.java | 1 + .../WEB-INF/jsp/nlib/board/insertQnAForm.jsp | 234 ++++++++++++------ .../WEB-INF/jsp/nlib/board/selectQnA.jsp | 11 +- .../WEB-INF/jsp/nlib/board/updateQnAForm.jsp | 2 +- src/main/webapp/js/fileupload/dropzone.js | 16 +- 14 files changed, 338 insertions(+), 92 deletions(-) create mode 100644 data/fileupload/bbs/qna/F20210802052436092_0A84FA72B1B1478ABEB285536B81B587 create mode 100644 data/fileupload/bbs/qna/F20210802052436092_F1DB407F181A4B8AAA0859E56D4EDB57 create mode 100644 data/fileupload/bbs/qna/F20210802052436092_F1F06656D13C451BA42E21B4028F3838 create mode 100644 src/main/java/nlib/cmm/fileupload/DownloadView.java diff --git a/data/dataxml/uac.service.board.qna_GET.xml b/data/dataxml/uac.service.board.qna_GET.xml index 29ffb998..df27a4d4 100644 --- a/data/dataxml/uac.service.board.qna_GET.xml +++ b/data/dataxml/uac.service.board.qna_GET.xml @@ -14,7 +14,7 @@ 답변완료 myid@digitalship.co.kr 질문이 있습니다. - 111111=화면캡쳐.jpg;222222=화면캡쳐2.jpg; + F20210802052436092_0A84FA72B1B1478ABEB285536B81B587=엑셀샘플.xlsx;F20210802052436092_F1DB407F181A4B8AAA0859E56D4EDB57=엑셀샘플2.xlsx; 이렇게 답변 드립니다. 333333=결과확인.jpg; diff --git a/data/dataxml/uac.service.board.qna_PUT.xml b/data/dataxml/uac.service.board.qna_PUT.xml index 0fa64dcf..7e8a41f6 100644 --- a/data/dataxml/uac.service.board.qna_PUT.xml +++ b/data/dataxml/uac.service.board.qna_PUT.xml @@ -2,6 +2,12 @@ + + + 10 diff --git a/data/fileupload/bbs/qna/F20210802052436092_0A84FA72B1B1478ABEB285536B81B587 b/data/fileupload/bbs/qna/F20210802052436092_0A84FA72B1B1478ABEB285536B81B587 new file mode 100644 index 0000000000000000000000000000000000000000..be14bd8a064cc64c487917ae3a143c3ef6b45c62 GIT binary patch literal 10519 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 paramMap, ModelMap model) { + public String insertQnAForm(HttpServletRequest req, Authentication authentication + , @RequestParam Map paramMap + , ModelMap model) { + // 입력 매개변수 출력 설정 + addParamsToModel(paramMap, model); + NlibLoginVO loginVO = getNlibLoginVO(authentication); - model.addAttribute("regUserName", loginVO.getName()); - model.addAttribute("email", loginVO.getEmail()); - + if(StringUtil.isEmpty(paramMap.get("regUserName"))) model.addAttribute("regUserName", loginVO.getName()); + if(StringUtil.isEmpty(paramMap.get("email"))) model.addAttribute("regUserName", loginVO.getEmail()); + return "nlib/board/insertQnAForm"; } @@ -256,15 +268,55 @@ public class BoardController extends NlibCommonController reqVO.addInfoItem("email" , paramMap.get("email")); reqVO.addInfoItem("contentQeust", paramMap.get("contentQeust")); + String fileListJsonStr = paramMap.get("fileList"); + if(fileListJsonStr.startsWith("\"")) fileListJsonStr = fileListJsonStr.substring(1); + if(fileListJsonStr.endsWith("\"")) fileListJsonStr = fileListJsonStr.substring(0, fileListJsonStr.length()-1); + fileListJsonStr = fileListJsonStr.replaceAll("\\\\", ""); + + log.debug("fileList : " + fileListJsonStr); + + /* + ObjectMapper mapper = new ObjectMapper(); + List> fileList = null; + try { + fileList = mapper.readValue(fileListJsonStr, new TypeReference>>() { + }); + + for (Map map : fileList) { + MapUtils.debugPrint(System.out, "map", map); + } + + } catch (JsonMappingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + log.debug("fileMap =" + fileList); + */ + reqVO.addInfoItem("fileList", fileListJsonStr); + // 요청 DataApiResVO resVO = boardService.insertQnA(reqVO); // 처리결과 확인 if(!resVO.isSuccess()) { message = resVO.getResultMessage(); + model.addAttribute("message", message); + addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword"); + addParamsToModel(paramMap, model, null, + "title,articlePassword," + + "regDate, regUserName, " + + "email, contentQeust"); + return "redirect:/board/insertQnAForm.do"; } + model.addAttribute("pageSize", paramMap.get("pageSize")); + model.addAttribute("message", "성공적으로 등록되었습니다."); + return "redirect:/board/listQnAs.do"; } diff --git a/src/main/java/nlib/cmm/NlibCommonController.java b/src/main/java/nlib/cmm/NlibCommonController.java index 89909936..df6f828c 100644 --- a/src/main/java/nlib/cmm/NlibCommonController.java +++ b/src/main/java/nlib/cmm/NlibCommonController.java @@ -64,7 +64,7 @@ public class NlibCommonController { * @return */ public NlibLoginVO getNlibLoginVO(Authentication authentication) { - if(authentication == null) return null; + if(authentication == null) return new NlibLoginVO(); return (NlibLoginVO)authentication.getPrincipal(); } @@ -210,6 +210,8 @@ public class NlibCommonController { } + if(existUpperMap) model.addAttribute(upperMapName, uppperMap); + return model; } diff --git a/src/main/java/nlib/cmm/fileupload/DownloadView.java b/src/main/java/nlib/cmm/fileupload/DownloadView.java new file mode 100644 index 00000000..052ba1a9 --- /dev/null +++ b/src/main/java/nlib/cmm/fileupload/DownloadView.java @@ -0,0 +1,72 @@ +package nlib.cmm.fileupload; + +import java.io.File; +import java.io.FileInputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Component; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.servlet.view.AbstractView; + +@Component("downloadView") +public class DownloadView extends AbstractView { + + @Override + protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) + throws Exception { + + File file = (File)model.get("downloadFile"); + if(file != null) { + String fileName =(String)model.get("fname"); + String userAgent = request.getHeader("User-Agent"); + + if(userAgent.indexOf("MSIE") > -1 || userAgent.indexOf("Trident") > -1){ + //fileName = URLEncoder.encode(file.getName(), "utf-8").replaceAll("\\+", "%20");; + }else if(userAgent.indexOf("Chrome") > -1) { + StringBuffer sb = new StringBuffer(); + for(int i=0; i '~') { + sb.append(URLEncoder.encode(""+c, "UTF-8")); + }else { + sb.append(c); + } + } + //fileName = sb.toString(); + }else { + //fileName = new String(file.getName().getBytes("utf-8")); + } + response.setContentType(getContentType()); + response.setContentLength((int)file.length()); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";"); + response.setHeader("Content-Transfer-Encoding", "binary"); + + OutputStream out = response.getOutputStream(); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + FileCopyUtils.copy(fis, out); + } catch(Exception e){ + e.printStackTrace(); + }finally{ + if(fis != null){ + try{ + fis.close(); + }catch(Exception e){ + e.printStackTrace(); + } + } + + if(out != null) { + out.flush(); + } + } + + } + } +} \ No newline at end of file diff --git a/src/main/java/nlib/cmm/fileupload/FileUploadController.java b/src/main/java/nlib/cmm/fileupload/FileUploadController.java index 7b169677..e3501e34 100644 --- a/src/main/java/nlib/cmm/fileupload/FileUploadController.java +++ b/src/main/java/nlib/cmm/fileupload/FileUploadController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -69,14 +70,12 @@ public class FileUploadController { /** * 첨부파일이 저장되는 최상위 위치 */ - @Value("#{properties['fileupload.base.path']}") - private String FILEUPLOAD_BASE_PATH; + private String FILEUPLOAD_BASE_PATH = nlibProperty.getProperty("fileupload.base.path"); /** * 첨부파일 임시 저장 위치 */ - @Value("#{properties['fileupload.temp.subpath']}") - private String FILEUPLOAD_TEMP_SUBPATH; + private String FILEUPLOAD_TEMP_SUBPATH = nlibProperty.getProperty("fileupload.temp.subpath"); @ResponseBody @RequestMapping(value="/fileupload/uploadFilesAjax.do", produces="application/json") @@ -182,5 +181,20 @@ public class FileUploadController { return ret; } + @RequestMapping(value="/fileupload/downloadFiles.do") + public ModelAndView download(@RequestParam HashMap params, ModelAndView mv) { + String fid = (String) params.get("fid"); + String fname = (String) params.get("fname"); + String subPath = nlibProperty.getProperty((String) params.get("subPathKey")); + + String fullPath = FILEUPLOAD_BASE_PATH + "/" + subPath + "/" + fid; + File file = new File(fullPath); + + mv.setViewName("downloadView"); + mv.addObject("downloadFile", file); + mv.addObject("fname", fname); + + return mv; + } } diff --git a/src/main/java/nlib/security/SpringSecurityConfig.java b/src/main/java/nlib/security/SpringSecurityConfig.java index 1381fe13..1ead7ed9 100644 --- a/src/main/java/nlib/security/SpringSecurityConfig.java +++ b/src/main/java/nlib/security/SpringSecurityConfig.java @@ -53,6 +53,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/temp/**") .antMatchers("/favicon/**") .antMatchers("/*/*Ajax.do") + .antMatchers("/fileupload/**") .antMatchers("/board/**") .antMatchers("/inform/**") .antMatchers("/alert/**") 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 40f7b7fb..3630c36e 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/board/insertQnAForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/board/insertQnAForm.jsp @@ -1,9 +1,9 @@ <% /** *
- * @Class Name : listQnAs.jsp
+ * @Class Name : insertQnAForm.jsp
  * 
- * @Description : 묻고답하기 목록을 조회한다.
+ * @Description : 묻고답하기 등록화면을 표출한다. 
  * 
  * 
  * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
@@ -31,7 +31,12 @@
 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
 
-묻고답하기 - 글쓰기
+묻고답하기 - 등록
+
+
+
+
+${pageTitle}
 
 
  
@@ -39,83 +44,164 @@
 
 
 
-

${pageTitle }

+ + + + + +

${pageTitle }

+ +메시지 : ${message } +
+ +
+ + + + + + + + +  
+  
+ + + + + + + + + + + + + + + + + + + + + + +
제목
작성자
비밀번호
+ * 비밀번호 : SHA-256 암호화 처리 후, DB에 저장되며, 웹 화면에 표출될 때는 Aria로 AuthKey를 Salt값으로 하여 재암호화처리하고 BASE64로 다시한번 인코딩하여 표출함 +
이메일
질문내용
+ +
+ + + + +
+ + 


-
-
-
- 이곳에 파일을 끌어다 놓거나, 클릭하여 올릴 파일을 선택하세요. -
+ +
+
+ 이곳에 파일을 끌어다 놓거나, 클릭하여 올릴 파일을 선택하세요. +
- - + + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp b/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp index 5db2f3ec..a994cfcb 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/board/selectQnA.jsp @@ -122,7 +122,16 @@ function fn_delete(passwd) { ${article.contentQeust} - ${article.contentQeustFile} + + <% + // 파일정보 : 저장파일ID=원파일명 + %> + + + + ${fInfo[1]}
+
+ 답변내용 diff --git a/src/main/webapp/WEB-INF/jsp/nlib/board/updateQnAForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/board/updateQnAForm.jsp index a584fa4a..e555862f 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/board/updateQnAForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/board/updateQnAForm.jsp @@ -100,7 +100,7 @@ function fn_update() { 작성자 - + 이메일 diff --git a/src/main/webapp/js/fileupload/dropzone.js b/src/main/webapp/js/fileupload/dropzone.js index c8a34081..9a43a0b2 100644 --- a/src/main/webapp/js/fileupload/dropzone.js +++ b/src/main/webapp/js/fileupload/dropzone.js @@ -117,7 +117,7 @@ url: null, method: "post", withCredentials: false, - parallelUploads: 2, + parallelUploads: 5, uploadMultiple: false, maxFilesize: 256, paramName: "file", @@ -127,12 +127,13 @@ //thumbnailHeight: 120, thumbnailHeight: 60, // NLIB filesizeBase: 1000, - maxFiles: null, + //maxFiles: null, + maxFiles: 3, // NLIB : 최대 업로드 가능한 파일수 params: {}, clickable: true, ignoreHiddenFiles: true, // acceptedFiles: null, - acceptedFiles: "image/*", // NLIB + acceptedFiles: "image/*,.hwp,.xls,.xlsx,.ppt,.pptx,.doc,.docx,.txt", // NLIB acceptedMimeTypes: null, //autoProcessQueue: true, autoProcessQueue: false, // NLIB @@ -142,17 +143,20 @@ previewsContainer: null, capture: null, dictDefaultMessage: "Drop files here to upload", - dictFallbackMessage: "파일 드래그앤드랍을 지원하지 않는 브라우저입니다.", // "Your browser does not support drag'n'drop file uploads.", + //dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.", + dictFallbackMessage: "파일 드래그앤드랍을 지원하지 않는 브라우저입니다.", // NLIB dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.", dictFileTooBig: "파일이 너무 큽니다({{filesize}}MiB). 최대 크기 {{maxFilesize}}MiB를 넘을 수 없습니다.", // "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.", - dictInvalidFileType: "You can't upload files of this type.", + //dictInvalidFileType: "You can't upload files of this type.", + dictInvalidFileType: "허용된 파일 형식만 첨부가능합니다 (이미지,문서 파일) ", // NLIB dictResponseError: "Server responded with {{statusCode}} code.", dictCancelUpload: "Cancel upload", dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?", //dictRemoveFile: "Remove file", dictRemoveFile: "취소", // NLIB dictRemoveFileConfirmation: null, - dictMaxFilesExceeded: "You can not upload any more files.", + //dictMaxFilesExceeded: "You can not upload any more files.", + dictMaxFilesExceeded: "이파일은, 첨부 가능 최대 개수를 초과하여 업로드되지 않습니다.", // NLIB accept: function(file, done) { return done(); },