diff --git a/src/main/java/nlib/bbs/service/AttachFileService.java b/src/main/java/nlib/bbs/service/AttachFileService.java
index 7789f6a1..bd8ddd33 100644
--- a/src/main/java/nlib/bbs/service/AttachFileService.java
+++ b/src/main/java/nlib/bbs/service/AttachFileService.java
@@ -7,45 +7,98 @@ import java.util.Map;
import nlib.user.service.NlibLoginVO;
+/**
+ *
+ * @Class Name : AttachFileService.java
+ *
+ * @Description : 첨부파일을 관리하는 서비스 인터페이스
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 9. 16. KNKIM 최초 생성
+ *
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 9. 16.
+ * @version 1.0
+ *
+ */
public interface AttachFileService
{
/**
* 첨부파일 목록을 조회한다.
*
- * @param
+ * @param attachFileId
* @return
* @throws Exception
*/
public List listAttachFiles(String attachFileId) throws Exception;
+ /**
+ * 첨부파일그룹 등록한다.
+ *
+ * @param attachFileVO
+ * @return
+ * @throws Exception
+ */
+ public int insertAttachFileGroup(AttachFileVO attachFileVO) throws Exception;
+
+
/**
* 첨부파일 등록한다.
*
- * @param
+ * @param attachFileVO
* @return
* @throws Exception
*/
public int insertAttachFile(AttachFileVO attachFileVO) throws Exception;
+
+ /**
+ * 첨부파일그룹을 삭제한다.
+ *
+ * @param attachFileVO
+ * @return
+ * @throws Exception
+ */
+ public int deleteAttachFileGroup(AttachFileVO attachFileVO) throws Exception;
+
/**
* 첨부파일 삭제한다.
*
- * @param
+ * @param attachFileVO
* @return
* @throws Exception
*/
public int deleteAttachFile(AttachFileVO attachFileVO) throws Exception;
+
/**
- * 첨부파일 다운로드 회수를 증가시킨다.
+ * 첨부파일 정보를 조회한다.
*
- * @param
+ * @param attachFileVO
* @return
* @throws Exception
*/
- public int increaseDownloadCount(AttachFileVO attachFileVO) throws Exception;
+ public AttachFileVO selectAttachFile(AttachFileVO attachFileVO) throws Exception;
+
+
+ /**
+ * 다운로드 가능 여부를 확인하다.
+ *
+ * @param attachFileVO
+ * @return
+ * @throws Exception
+ */
+ public boolean checkAttachFileDownload(AttachFileVO attachFileVO) throws Exception;
}
diff --git a/src/main/java/nlib/bbs/service/AttachFileVO.java b/src/main/java/nlib/bbs/service/AttachFileVO.java
index 0a099eb6..2334bb80 100644
--- a/src/main/java/nlib/bbs/service/AttachFileVO.java
+++ b/src/main/java/nlib/bbs/service/AttachFileVO.java
@@ -27,164 +27,94 @@ import nlib.util.UUID;
*/
public class AttachFileVO {
+ private String bdType; /* 첨부된 게시판 유형 : ancmnt, faq, qna */
+ private String mbInfoId; /* 사용자ID (권한체크 등에 사용) */
+
private String subPathKey; /* 첨부파일서브경로 */
- private String fileMask; /* 첨부파일아이디 */
- private String fileId; /* 업무 아이디 */
- private int fileSeq; /* 파일 번호 */
- private String fileName; /* 파일 이름 */
- private int fileSize; /* 파일 사이즈 */
- private String fileTypeCd; /* 파일 유형(디지털화사용) */
- private int downloadCount; /* 파일 다운로드 횟수 */
- private String downloadExpireDate; /* 파일 만료 날짜 */
- private int downloadLimitCount; /* 파일 다운로드 제한 횟수 */
-
- private String deleteYn; /* 삭제 여부 */
- private String streamingUrl; /* 스트리밍URL */
- private String content; /* 내용주기 */
- private String atchTypeCd; /* 첨부파일유형 (image, doc) */
-
- private String regDd; /* 등록 날짜 */
-
+ private String attachFileId; /* 첨부파일아이디 */
+ private int fileSn; /* 파일 순번 */
+ private String fileStreCours; /* 파일 저장결올 */
+ private String streFileNm; /* 저장파일명 */
+ private String orignlFileNm; /* 원본파일명 */
private String fileExtsn; /* 파일확장자 */
+ private String fileCn; /* 파일내용 */
+ private int fileSize; /* 파일 사이즈 */
+ private String useAt; /* 사용영부 */
- public void setAtchTypeCdFromFileExtsn() {
- if(StringUtil.isEmpty(fileExtsn)) return;
-
- if("|jpg|jpeg|png|gif|".contains(fileExtsn)) atchTypeCd = "image";
- else if("|hwp|doc|docx|xls|xlsx|ppt|pptx|".contains(fileExtsn)) atchTypeCd = "doc";
-
- return;
-
- }
-
- public String getFileMask() {
- return fileMask;
- }
-
- public void setFileMask(String fileMask) {
- this.fileMask = fileMask;
- }
-
- public String getFileId() {
- return fileId;
- }
-
- public void setFileId(String fileId) {
- this.fileId = fileId;
- }
-
- public String getFileName() {
- return fileName;
- }
-
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public String getFileTypeCd() {
- return fileTypeCd;
- }
-
- public void setFileTypeCd(String fileTypeCd) {
- this.fileTypeCd = fileTypeCd;
- }
-
- public String getDownloadExpireDate() {
- return downloadExpireDate;
- }
-
- public void setDownloadExpireDate(String downloadExpireDate) {
- this.downloadExpireDate = downloadExpireDate;
- }
-
- public String getDeleteYn() {
- return deleteYn;
- }
-
- public void setDeleteYn(String deleteYn) {
- this.deleteYn = deleteYn;
- }
-
- public String getStreamingUrl() {
- return streamingUrl;
- }
-
- public void setStreamingUrl(String streamingUrl) {
- this.streamingUrl = streamingUrl;
- }
-
- public String getContent() {
- return content;
- }
-
- public void setContent(String content) {
- this.content = content;
- }
-
- public String getAtchTypeCd() {
- return atchTypeCd;
- }
-
- public void setAtchTypeCd(String atchTypeCd) {
- this.atchTypeCd = atchTypeCd;
- }
-
- public String getRegDd() {
- return regDd;
- }
-
- public void setRegDd(String regDd) {
- this.regDd = regDd;
- }
-
- public int getFileSeq() {
- return fileSeq;
- }
-
- public void setFileSeq(int fileSeq) {
- this.fileSeq = fileSeq;
- }
-
- public int getFileSize() {
- return fileSize;
- }
-
- public void setFileSize(int fileSize) {
- this.fileSize = fileSize;
- }
-
-
- public int getDownloadCount() {
- return downloadCount;
- }
-
- public void setDownloadCount(int downloadCount) {
- this.downloadCount = downloadCount;
- }
-
- public int getDownloadLimitCount() {
- return downloadLimitCount;
- }
-
- public void setDownloadLimitCount(int downloadLimitCount) {
- this.downloadLimitCount = downloadLimitCount;
- }
+ // GET/SET
public String getSubPathKey() {
return subPathKey;
}
-
public void setSubPathKey(String subPathKey) {
this.subPathKey = subPathKey;
}
-
+ public String getAttachFileId() {
+ return attachFileId;
+ }
+ public void setAttachFileId(String attachFileId) {
+ this.attachFileId = attachFileId;
+ }
+ public int getFileSn() {
+ return fileSn;
+ }
+ public void setFileSn(int fileSn) {
+ this.fileSn = fileSn;
+ }
+ public String getFileStreCours() {
+ return fileStreCours;
+ }
+ public void setFileStreCours(String fileStreCours) {
+ this.fileStreCours = fileStreCours;
+ }
+ public String getStreFileNm() {
+ return streFileNm;
+ }
+ public void setStreFileNm(String streFileNm) {
+ this.streFileNm = streFileNm;
+ }
+ public String getOrignlFileNm() {
+ return orignlFileNm;
+ }
+ public void setOrignlFileNm(String orignlFileNm) {
+ this.orignlFileNm = orignlFileNm;
+ }
public String getFileExtsn() {
return fileExtsn;
}
-
public void setFileExtsn(String fileExtsn) {
this.fileExtsn = (fileExtsn == null ? null : fileExtsn.toLowerCase());
}
+ public String getFileCn() {
+ return fileCn;
+ }
+ public void setFileCn(String fileCn) {
+ this.fileCn = fileCn;
+ }
+ public int getFileSize() {
+ return fileSize;
+ }
+ public void setFileSize(int fileSize) {
+ this.fileSize = fileSize;
+ }
+ public String getUseAt() {
+ return useAt;
+ }
+ public void setUseAt(String useAt) {
+ this.useAt = useAt;
+ }
+ public String getMbInfoId() {
+ return mbInfoId;
+ }
+ public void setMbInfoId(String mbInfoId) {
+ this.mbInfoId = mbInfoId;
+ }
+ public String getBdType() {
+ return bdType;
+ }
+ public void setBdType(String bdType) {
+ this.bdType = bdType;
+ }
}
diff --git a/src/main/java/nlib/bbs/service/impl/AttachFileDAO.java b/src/main/java/nlib/bbs/service/impl/AttachFileDAO.java
index 8e147b15..0c1d77b5 100644
--- a/src/main/java/nlib/bbs/service/impl/AttachFileDAO.java
+++ b/src/main/java/nlib/bbs/service/impl/AttachFileDAO.java
@@ -50,6 +50,16 @@ public interface AttachFileDAO {
public List listAttachFiles(String attachFileId) throws Exception;
+ /**
+ * 첨부파일그룹을 등록한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public int insertAttachFileGroup(AttachFileVO attachFileVO) throws Exception;
+
+
/**
* 첨부파일 등록한다.
*
@@ -59,6 +69,15 @@ public interface AttachFileDAO {
*/
public int insertAttachFile(AttachFileVO attachFileVO) throws Exception;
+ /**
+ * 첨부파일그룹을 삭제한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public int deleteAttachFileGroup(AttachFileVO attachFileVO) throws Exception;
+
/**
* 첨부파일 삭제한다.
*
@@ -69,12 +88,20 @@ public interface AttachFileDAO {
public int deleteAttachFile(AttachFileVO attachFileVO) throws Exception;
/**
- * 첨부파일 다운로드 회수를 증가시킨다.
+ * 첨부파일 정보를 조회한다.
*
- * @param
+ * @param attachFileVO
* @return
* @throws Exception
*/
- public int increaseDownloadCount(AttachFileVO attachFileVO) throws Exception;
-
+ public AttachFileVO selectAttachFile(AttachFileVO attachFileVO) throws Exception;
+
+ /**
+ * 다운로드 가능 여부를 확인하다.
+ *
+ * @param attachFileVO
+ * @return
+ * @throws Exception
+ */
+ public String checkAttachFileDownload(AttachFileVO attachFileVO) throws Exception;
}
diff --git a/src/main/java/nlib/bbs/service/impl/AttachFileServiceImpl.java b/src/main/java/nlib/bbs/service/impl/AttachFileServiceImpl.java
index c99470d2..4ca37942 100644
--- a/src/main/java/nlib/bbs/service/impl/AttachFileServiceImpl.java
+++ b/src/main/java/nlib/bbs/service/impl/AttachFileServiceImpl.java
@@ -10,7 +10,30 @@ import org.springframework.stereotype.Service;
import nlib.bbs.service.AttachFileService;
import nlib.bbs.service.AttachFileVO;
+import nlib.util.StringUtil;
+/**
+ *
+ * @Class Name : AttachFileServiceImpl.java
+ *
+ * @Description : 첨부파일을 관리하는 서비스 클래스
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 9. 16. KNKIM 최초 생성
+ *
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 9. 16.
+ * @version 1.0
+ *
+ */
@Service("attachFileService")
public class AttachFileServiceImpl implements AttachFileService
{
@@ -26,24 +49,90 @@ public class AttachFileServiceImpl implements AttachFileService
* @return
* @throws Exception
*/
+ @Override
public List listAttachFiles(String attachFileId) throws Exception {
return attachFileDAO.listAttachFiles(attachFileId);
}
+ /**
+ * 첨부파일그룹 등록한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public int insertAttachFileGroup(AttachFileVO attachFileVO) throws Exception {
+ return attachFileDAO.insertAttachFileGroup(attachFileVO);
+ }
+
+ /**
+ * 첨부파일 등록한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
@Override
public int insertAttachFile(AttachFileVO attachFileVO) throws Exception {
-
return attachFileDAO.insertAttachFile(attachFileVO);
}
+ /**
+ * 첨부파일그룹을 삭제한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public int deleteAttachFileGroup(AttachFileVO attachFileVO) throws Exception {
+ return attachFileDAO.deleteAttachFileGroup(attachFileVO);
+ }
+
+ /**
+ * 첨부파일 삭제한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
@Override
public int deleteAttachFile(AttachFileVO attachFileVO) throws Exception {
return attachFileDAO.deleteAttachFile(attachFileVO);
}
+
- @Override
- public int increaseDownloadCount(AttachFileVO attachFileVO) throws Exception {
- return attachFileDAO.increaseDownloadCount(attachFileVO);
+
+ /**
+ * 첨부파일 정보를 조회한다.
+ *
+ * @param attachFileVO
+ * @return
+ * @throws Exception
+ */
+ public AttachFileVO selectAttachFile(AttachFileVO attachFileVO) throws Exception {
+
+ if(attachFileVO == null) return null;
+ if(StringUtil.isEmpty(attachFileVO.getAttachFileId())) return null;
+ if(attachFileVO.getFileSn() < 1) return null;
+
+ return attachFileDAO.selectAttachFile(attachFileVO);
}
+
+ /**
+ * 다운로드 가능 여부를 확인하다.
+ *
+ * @param attachFileVO
+ * @return
+ * @throws Exception
+ */
+ public boolean checkAttachFileDownload(AttachFileVO attachFileVO) throws Exception {
+ String ret = attachFileDAO.checkAttachFileDownload(attachFileVO);
+
+ if(StringUtil.isEmpty(ret)) return false;
+
+ return ret.charAt(0) == 'Y';
+ }
}
\ No newline at end of file
diff --git a/src/main/java/nlib/bbs/service/impl/QnaServiceImpl.java b/src/main/java/nlib/bbs/service/impl/QnaServiceImpl.java
index 031fcd03..b7b2f890 100644
--- a/src/main/java/nlib/bbs/service/impl/QnaServiceImpl.java
+++ b/src/main/java/nlib/bbs/service/impl/QnaServiceImpl.java
@@ -46,22 +46,35 @@ public class QnaServiceImpl extends BoardServiceImpl implements QnaService
}
articleVO.setResultCode("S001");
+ articleVO.setResultMessage("정상적으로 등록되었습니다.");
if(articleVO.getAttachFileCnt() > 0) {
int savedCnt = 0;
List attachFileList = articleVO.getAttachFiles();
- for(int i=0; i 첨부파일 등록에 실패하였습니다 : " + attachFileVO.getFileName());
- }
- }
- if(savedCnt != articleVO.getAttachFileCnt()) {
- articleVO.setResultMessage(String.format("총 %d개 파일 중 %개 파일만 정상등록되었습니다.", articleVO.getAttachFileCnt(), savedCnt));
+ // 첨부파일그룹 등록
+ int groupCnt = attachFileService.insertAttachFileGroup(attachFileList.get(0));
+
+ if(groupCnt > 0) {
+
+ // 첨부파일 등록
+ for(int i=0; i 첨부파일 등록에 실패하였습니다 : " + attachFileVO.getOrignlFileNm());
+ }
+ }
+
+ if(savedCnt != articleVO.getAttachFileCnt()) {
+ articleVO.setResultMessage(String.format("총 %d개 파일 중 %개 파일만 정상등록되었습니다.", articleVO.getAttachFileCnt(), savedCnt));
+ }
+
+ } else {
+ articleVO.setResultMessage("게시글은 등록되었으나, 첨부파일그룹 등록에 실패하여 첨부파일 등록처리가 수행되지 않았습니다.");
}
+
}
return articleVO;
diff --git a/src/main/java/nlib/bbs/web/QnaController.java b/src/main/java/nlib/bbs/web/QnaController.java
index 5c653240..6dc7d0b8 100644
--- a/src/main/java/nlib/bbs/web/QnaController.java
+++ b/src/main/java/nlib/bbs/web/QnaController.java
@@ -1,6 +1,7 @@
package nlib.bbs.web;
+import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -260,33 +261,37 @@ public class QnaController extends NlibCommonController {
}
if(fileListObj != null && fileListObj.size() > 0) {
- List attachFiles = new ArrayList();
- String fileId = null;
- for(int i=0; i attachFiles = new ArrayList();
+
+ for(int i=0; i entry = itr.next();
file = entry.getValue();
- String orginFileName = file.getOriginalFilename();
+ String orignlFileNm = file.getOriginalFilename();
//--------------------------------------
// 원 파일명이 없는 경우 처리 SKIP
// (첨부가 되지 않은 input file type)
//--------------------------------------
- if (orginFileName == null || "".equals(orginFileName)) {
+ if (orignlFileNm == null || "".equals(orignlFileNm)) {
continue;
}
- int index = orginFileName.lastIndexOf(".");
- String fileExt = (index < 1 ? "" : orginFileName.substring(index + 1));
+ // 파일 확장자
+ int index = orignlFileNm.lastIndexOf(".");
+ String fileExt = (index < 1 ? "" : orignlFileNm.substring(index + 1));
//String newName = UUID.getPhysicalFileName();
- String fileMask = UUID.getNewFileMask();
+
int size = (int)file.getSize();
+ String streFileNm = UUID.getNewStreFileNm();
+
+ filePath = FILEUPLOAD_BASE_PATH + subPath + "/" + streFileNm;
+ log.debug("FILE UPLOAD : filePath=" + filePath);
- if (!"".equals(orginFileName)) {
- filePath = FILEUPLOAD_BASE_PATH + subPath + "/" + fileMask;
- log.debug("FILE UPLOAD : filePath=" + filePath);
-
- file.transferTo(new File(FileUtil.filePathBlackList(filePath)));
- }
-
- // ---------------- 삭제대상 : 시작
- fvo = new FileVO();
- fvo.setFileExtsn(fileExt);
- fvo.setFileMg(Long.toString(size));
- fvo.setOrignlFileNm(orginFileName);
- fvo.setStreFileNm(fileMask);
- fvo.setFileSn(String.valueOf(fileSeq));
- // ---------------- 삭제대상 : 종료
-
+ file.transferTo(new File(FileUtil.filePathBlackList(filePath)));
+
atvo = new AttachFileVO();
atvo.setSubPathKey(subPathKey);
- atvo.setFileMask(fileMask);
- atvo.setFileId(fileId);
- atvo.setFileSeq(fileSeq);
- atvo.setFileName(orginFileName);
- atvo.setFileSize(size);
+ atvo.setAttachFileId(attachFileId);
+ atvo.setStreFileNm(streFileNm);
+ atvo.setOrignlFileNm(orignlFileNm);
atvo.setFileExtsn(fileExt);
- atvo.setAtchTypeCdFromFileExtsn();
+ atvo.setFileSize(size);
result.add(atvo);
-
- fileSeq++;
}
}
} catch(Exception e) {
@@ -241,17 +233,38 @@ public class FileUploadController {
@RequestMapping(value="/fileupload/downloadAttachFile.do")
public ModelAndView downloadAttachFile(AttachFileVO attachFileVO, ModelAndView mv) throws Exception {
- // TODO 권한 설정 기능 추가 필요
+ //---------------------------------
+ // 권한체크
+ //---------------------------------
+ // 공지사항, FAQ : 모두 공개
+ // QnA : 공개된 글인 경우, 모두 공개
+ // QnA : 비밀글 (본인에 한정)
- int ret = attachFileService.increaseDownloadCount(attachFileVO);
- if(ret < 1) {
- String message = "다운로드 가능 회수를 초과하였거나, 해당 정보를 찾을 수 없습니다.";
- log.error("downloadAttachFile > " + message);
- throw new Exception(message);
+ boolean hasAuth = attachFileService.checkAttachFileDownload(attachFileVO);
+
+ if(!hasAuth) {
+ throw new Exception("잘못된 접근입니다. 파일다운로드를 할 수 있는 권한이 없습니다.");
}
- String subPath = NlibProperty.getProperty(attachFileVO.getSubPathKey());
- String fullPath = FILEUPLOAD_BASE_PATH + "/" + subPath + "/" + attachFileVO.getFileMask();
+ AttachFileVO retAttachFileVO = attachFileService.selectAttachFile(attachFileVO);
+
+ if(retAttachFileVO == null || StringUtil.isEmpty(retAttachFileVO.getAttachFileId())) {
+ throw new Exception("잘못된 접근이므로 파일다운로드를 할 수 없습니다.");
+ }
+
+ if(StringUtil.isEmpty(retAttachFileVO.getFileStreCours()) || StringUtil.isEmpty(retAttachFileVO.getStreFileNm())) {
+ throw new Exception("파일정보가 올바르지 않습니다.");
+ }
+
+ if(StringUtil.isEmpty(retAttachFileVO.getOrignlFileNm())) {
+ retAttachFileVO.setOrignlFileNm("첨부파일." + retAttachFileVO.getFileExtsn());
+ }
+
+ if(StringUtil.isEmpty(retAttachFileVO.getOrignlFileNm())) {
+ retAttachFileVO.setOrignlFileNm("첨부파일." + retAttachFileVO.getFileExtsn());
+ }
+
+ String fullPath = retAttachFileVO.getFileStreCours() + retAttachFileVO.getStreFileNm();
log.debug("downloadAttachFile > fullPath = " + fullPath);
@@ -266,7 +279,7 @@ public class FileUploadController {
mv.setViewName("downloadView"); // dispatcher-servlet.xml내 BeanNameViewResolver 정의
mv.addObject("downloadFile", file);
- mv.addObject("fname", attachFileVO.getFileName());
+ mv.addObject("fname", attachFileVO.getOrignlFileNm());
return mv;
}
diff --git a/src/main/java/nlib/util/UUID.java b/src/main/java/nlib/util/UUID.java
index 62f1355c..b5729118 100644
--- a/src/main/java/nlib/util/UUID.java
+++ b/src/main/java/nlib/util/UUID.java
@@ -49,8 +49,14 @@ public class UUID {
return articleID;
}
- public static String getNewFileMask() {
- return StringUtil.getTimeStamp("yyyyMMddhhmmss") + getNewUUIDWithAlphaNum();
+ public static String getNewAttachFileId() {
+ //return StringUtil.getTimeStamp("yyyyMMddhhmmss") + getNewUUIDWithAlphaNum();
+ return getNlibCommonID("AT", 35);
+ }
+
+ public static String getNewStreFileNm() {
+ // NQ202109300311510712
+ return "NQ" + StringUtil.getTimeStamp() + getNlibCommonID(null, 5);
}
public static String getNewFileId() {
diff --git a/src/main/resources/egovframework/mapper/nlib/bbs/AttachFileDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/bbs/AttachFileDAO_SQL.xml
index d19ccce2..8165eb8a 100644
--- a/src/main/resources/egovframework/mapper/nlib/bbs/AttachFileDAO_SQL.xml
+++ b/src/main/resources/egovframework/mapper/nlib/bbs/AttachFileDAO_SQL.xml
@@ -5,74 +5,114 @@
+
+
-
- INSERT INTO J_ATTACHFILE (
- FILE_MASK
- , FILE_ID
- , FILE_SEQ
- , FILE_NAME
- , FILE_SIZE
- , FILE_TYPE_CD
- , DOWNLOAD_COUNT
- , DOWNLOAD_EXPIRE_DATE
- , DOWNLOAD_LIMIT_COUNT
- , REG_DATE
- , DELETE_YN
- , STREAMING_URL
- , CONTENT
- , ATCH_TYPE_CD
+
+
+
+ INSERT INTO BD_FILE (
+ ATTACH_FILE_ID
+ , REG_DD
+ , USE_AT
) VALUES (
- #{fileMask}
- , #{fileId}
- , #{fileSeq}
- , #{fileName}
- , #{fileSize}
- , #{fileTypeCd}
- , 0
- , NULL
- , NULL
+ #{attachFileId}
, NOW()
- , 'N'
- , NULL
- , NULL
- , #{atchTypeCd}
+ , 'Y'
)
-
- UPDATE J_ATTACHFILE SET DELETE_YN = 'Y'
- WHERE FILE_MASK = #{fileMask}
- AND FILE_ID = #{fileId}
- AND FILE_SEQ = #{fileSeq}
+
+
+ SELECT IFNULL(MAX(FILE_SN) + 1, 1)
+ FROM BD_FILEDETAIL
+ WHERE ATTACH_FILE_ID = #{attachFileId}
+
+ INSERT INTO BD_FILEDETAIL (
+ ATTACH_FILE_ID
+ , FILE_SN
+ , FILE_STRE_COURS
+ , STRE_FILE_NM
+ , ORIGNL_FILE_NM
+ , FILE_EXTSN
+ , FILE_CN
+ , FILE_SIZE
+ , USE_AT
+ ) VALUES (
+ #{attachFileId}
+ , IFNULL(#{fileSn}, 1)
+ , #{fileStreCours}
+ , #{streFileNm}
+ , #{orignlFileNm}
+ , #{fileExtsn}
+ , NULL
+ , #{fileSize}
+ , 'Y'
+ )
+
+
+
+ UPDATE BD_FILE SET USE_AT = 'N'
+ WHERE ATTACH_FILE_ID = #{attachFileId}
-
-
-
+
+ UPDATE BD_FILEDETAIL SET USE_AT = 'N'
+ WHERE ATTACH_FILE_ID = #{attachFileId}
+ AND FILE_SN = #{fileSn}
+
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/bbs/insertQnaForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/bbs/insertQnaForm.jsp
index cae5e183..b562dd7a 100644
--- a/src/main/webapp/WEB-INF/jsp/nlib/bbs/insertQnaForm.jsp
+++ b/src/main/webapp/WEB-INF/jsp/nlib/bbs/insertQnaForm.jsp
@@ -69,7 +69,7 @@ $(window.document).ready(function() {
// 파일 업로드 처리 : 시작
//--------------------------------------------------------------------
// 파일업로드 객체 생성
- myDropzone = new Dropzone("form#myDropzone", { url: "${pageContext.request.contextPath}/fileupload/uploadFilesAjax.do?subPathKey=fileupload.bbs.qna.subpath"});
+ myDropzone = new Dropzone("form#myDropzone", { url: "${pageContext.request.contextPath}/fileupload/uploadFilesAjax.do?subPathKey=fileupload.bbs.qna.subpath&attachFileId=${searchArticle.bdAttachFileId}"});
// 각 파일별 업로드 성공시 호출됨 (1th called)
myDropzone.on("success", function(file, responseText) {
@@ -77,13 +77,13 @@ $(window.document).ready(function() {
console.log("file upload success : responseText = " + responseText);
console.log("fileUpDone count : " + fileList.length);
var idx = fileList.length;
- fileList[idx] = {
- "fileMask" : jobj[0].fileMask,
- "fileId" : jobj[0].fileId,
- "fileSeq" : (idx+1),
- "fileName" : jobj[0].fileName,
- "fileSize" : jobj[0].fileSize,
- "atchTypeCd" : jobj[0].atchTypeCd,
+ fileList[idx++] = {
+ "attachFileId" : jobj[0].attachFileId,
+ "streFileNm" : jobj[0].streFileNm,
+ "orignlFileNm" : jobj[0].orignlFileNm,
+ "fileExtsn" : jobj[0].fileExtsn,
+ "fileSn" : jobj[0].fileSn,
+ "fileSize" : jobj[0].fileSize
};
console.log("success : " + file.name + " -> " + "data > " + jobj[0].streFileNm);
});
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/bbs/selectQnaArticle.jsp b/src/main/webapp/WEB-INF/jsp/nlib/bbs/selectQnaArticle.jsp
index aa820014..2e5cf9cb 100644
--- a/src/main/webapp/WEB-INF/jsp/nlib/bbs/selectQnaArticle.jsp
+++ b/src/main/webapp/WEB-INF/jsp/nlib/bbs/selectQnaArticle.jsp
@@ -58,32 +58,21 @@ function fn_delete() {
}
// 파일 다운로드
-function fn_downloadFile(fileMask, fileId, fileSeq, fileName) {
+function fn_downloadFile(attachFileId, fileSn) {
- if(fileMask == null || fileMask.trim().length < 1) {
+ if(attachFileId == null || attachFileId.trim().length < 1) {
alert("파일정보를 확인해 주시기 바랍니다.[1]");
return;
}
- if(fileId == null || fileId.trim().length < 1) {
- alert("파일정보를 확인해 주시기 바랍니다.[2]");
- return;
- }
-
- if(fileSeq < 1) {
+ if(fileSn < 1) {
alert("파일정보를 확인해 주시기 바랍니다.[3]");
return;
}
- if(fileName == null || fileName.trim().length < 1) {
- alert("파일정보를 확인해 주시기 바랍니다.[4]");
- return;
- }
-
- $("#fileMask").val(fileMask);
- $("#fileId").val(fileId);
- $("#fileSeq").val(fileSeq);
- $("#fileName").val(fileName);
+ $("#attachFileId").val(attachFileId);
+ $("#fileSn").val(fileSn);
+
$("#downloadFileForm").submit();
}
@@ -153,7 +142,7 @@ function fn_downloadFile(fileMask, fileId, fileSeq, fileName) {
// 파일정보 : 저장파일ID=원파일명
%>
- ${attachFile.fileName} (${attachFile.fileSize} byte(s))
+ ${attachFile.orignlFileNm} (${attachFile.fileSize} byte(s))
@@ -187,11 +176,12 @@ function fn_downloadFile(fileMask, fileId, fileSeq, fileName) {