• Y
  • List All
  • Feedback
    • This Project
    • All Projects
Profile Account settings Log out
  • Favorite
  • Project
  • All
Loading...
  • Log in
  • Sign up
chominsoo4245 / mjon_git star
Forked from hylee / mjon_git
  • Project homeH
  • CodeC
  • IssueI
  • Pull requestP
  • Review R
  • MilestoneM
  • BoardB
  • Files
  • Commit
  • Branches
mjon_gitsrcmainjavaitnletutluserserviceCheckFileUtil.java
Download as .zip file
File name
Commit message
Commit date
DATABASE
mjon_git
2023-06-12
src/main
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
.codetogether.ignore
mjon_git
2023-06-12
.gitignore
gitignore 적용
2023-06-12
pom.xml
롬복 추가 , [사용자] 결제관리 > 요금 사용내역 ==> 사용금액 표시 방법 변경 완료
2024-07-09
File name
Commit message
Commit date
java
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
resources
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
webapp
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
File name
Commit message
Commit date
egovframework
mjon_git
2023-06-12
itn
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
File name
Commit message
Commit date
com
발송 진행중
2024-10-11
let
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
web
메인메뉴 및 사이트맵에서 선거 후보자 정보가 없는 경우 선거문자 메뉴가 안보이도록 처리
2024-02-08
File name
Commit message
Commit date
cop
이용약관 및 개인정보 내용 수정
2024-10-28
crypto/web
mjon_git
2023-06-12
fax
주소록 수정중
2024-09-09
hangulparser
mjon_git
2023-06-12
kakao
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
komoran
mjon_git
2023-06-12
lett
선택한 그림문자의 우선선위 변경 기능 추가
2023-09-05
mail
문자발송로직 impl 화 완료 -> 리펙토링 진행 중
2024-09-27
main
이준호 문자온 커밋 - IP 받아오는 방식 수정
2023-07-28
mjo
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
module/base
금액 포인트 class 수정
2024-07-08
org
mjon_git
2023-06-12
schdlr/service
스케줄러 오류관련 로그 추가
2024-11-05
sec
mjon_git
2023-06-12
solr
mjon_git
2023-06-12
sts
mjon_git
2023-06-12
sym
이용약관 관련 기능 수정
2024-11-05
uat
Merge branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-09-10
uss
Merge branch 'advc' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git into advc
2024-11-05
utl
회원 이메일 발송 건수 15분 단위로 기존 200건 -> 500건으로 변경
2024-10-25
File name
Commit message
Commit date
fcc/service
mjon_git
2023-06-12
log4j
mjon_git
2023-06-12
sim/service
이준호 문자온 커밋 - IP 받아오는 방식 수정
2023-07-28
user/service
회원 이메일 발송 건수 15분 단위로 기존 200건 -> 500건으로 변경
2024-10-25
File name
Commit message
Commit date
CheckBoardUtil.java
mjon_git
2023-06-12
CheckFileUtil.java
mjon_git
2023-06-12
CheckLoginUtil.java
mjon_git
2023-06-12
CheckNoServiceCommon.java
mjon_git
2023-06-12
MjonNoticeSendUtil.java
회원 이메일 발송 건수 15분 단위로 기존 200건 -> 500건으로 변경
2024-10-25
MjonSmsCertSendUtil.java
문자온 대표번호 변경으로 인한 15518011 으로 변경
2024-07-31
SecuKeyUtil.java
mjon_git
2023-06-12
hylee 2023-06-12 e2842cb mjon_git UNIX
Raw Open in browser Change history
package itn.let.utl.user.service; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.Iterator; import java.util.List; import javax.annotation.Resource; import org.apache.commons.lang3.ArrayUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.service.FileVO; import itn.com.cmm.util.StringUtil; import itn.let.cop.bbs.service.BoardMaster; /** * * 파일 체크에 대한 Util 클래스 * @author 사업기술본부 조용준(ITN) * @since 2021.07.16 * @version 1.0 * @see * * <pre> * << 개정이력(Modification Information) >> * * 수정일 수정자 수정내용 * ------- -------- --------------------------- * 2021.07.16 조용준 최초 생성 * * * </pre> */ @Service("checkFileUtil") public class CheckFileUtil { private static final Logger LOGGER = LoggerFactory.getLogger(CheckBoardUtil.class); /** EgovMessageSource */ @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; /** * //게시판 첨부 파일 제약 조건 체크 * * @param encrypt */ public boolean isPosblAtchFileMvWithBoardMaster( List<FileVO> fileList , ModelAndView p_mv , int atchFileCnt //기존에 파일이 있는 경우 , String p_exts //가능한 확장자를 받는다. | , BoardMaster boardMaster //관리자 게시판 생성 정보 ) throws Exception { //LOGGER.debug("commonLoginUtil.isPosblAtchFileMv()"); return this.p_isPosblAtchFileMvWithBoardMaster(fileList, boardMaster, p_mv, atchFileCnt, p_exts); } /** * //게시판 첨부 파일 제약 조건 체크 * * @param encrypt */ public boolean isPosblAtchFileMvWithUserSetting( List<FileVO> fileList , ModelAndView p_mv , int atchFileCnt //기존에 파일이 있는 경우 , String p_exts //가능한 확장자를 받는다. | , int p_i_file_size , int p_i_file_count ) throws Exception { //LOGGER.debug("commonLoginUtil.isPosblAtchFileMv()"); return this.p_isPosblAtchFileMvWithUserSetting(fileList, p_mv, atchFileCnt, p_exts, p_i_file_size, p_i_file_count); } /** * //업로드된 text 파일에서 내용 추출하기 * * @param encrypt */ //text 파일에서 추출하기 public List<String> extractFromTxtFile( MultipartHttpServletRequest p_multiRequest , List<String> p_sb ) throws Exception{ return this.p_extractFromTxtFile(p_multiRequest, p_sb); } /** * //업로드된 excel 파일에서 내용 추출하기 * * @param encrypt */ //excel 파일에서 추출하기(xls, xlsx) public List<String> extractFromExcelFile( MultipartHttpServletRequest p_multiRequest , List<String> p_sb ) throws Exception{ return this.p_extractFromExcelFile(p_multiRequest, p_sb); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // private function // // /** * //게시판 첨부 파일 제약 조건으로 파일 체크 * * @param encrypt */ private boolean p_isPosblAtchFileMvWithBoardMaster( List<FileVO> fileList , BoardMaster boardMaster , ModelAndView p_mv , int atchFileCnt //기존에 파일이 있는 경우 , String p_exts //가능한 확장자를 받는다. | ) throws Exception { boolean posblAtchFileFlag = true; try { LOGGER.debug("CheckFileUtil.isPosblAtchFileMvWithBoardMaster()"); int fileCnt = 0; long posblAtchFileSize = Long.parseLong(boardMaster.getPosblAtchFileSize()) * 1024 * 1024 ; int posblAtchFileNumber = Integer.parseInt(boardMaster.getPosblAtchFileNumber()); //String bbsTyCode = boardMaster.getBbsTyCode(); String flashMessage = ""; boolean posblAtchFileSizeFlag = true; boolean posblAtchFileExtFlag = true; String[] imgExts = p_exts.split("\\|"); Iterator<?> iter = fileList.iterator(); while (iter.hasNext()) { FileVO vo = (FileVO) iter.next(); long fileMg = Long.parseLong(vo.getFileMg()); String fileExt = vo.getFileExtsn(); if (fileMg > posblAtchFileSize) posblAtchFileSizeFlag = false; //String[] imgExts = {"gif", "jpg", "bmp", "jpeg", "png"}; //String[] imgExts = {"xlsx", "xls", "zip", "hwp", "txt", "doc", "docx", "csv"}; if (ArrayUtils.indexOf(imgExts, fileExt.toLowerCase()) == -1) posblAtchFileExtFlag = false; fileCnt++; } if (!posblAtchFileExtFlag) { for (int i=0;i<imgExts.length;i++) { if (i==0) flashMessage += imgExts[i]; else flashMessage += ", " + imgExts[i]; } flashMessage += " 형식의 확장자만 업로드 가능합니다." + "\\n"; posblAtchFileFlag = false; } if(!posblAtchFileSizeFlag) { flashMessage += "파일사이즈가 초과되었습니다. 최대크기 " + posblAtchFileSize + "mb" + "\\n"; posblAtchFileFlag = false; } if ((fileCnt+atchFileCnt) > posblAtchFileNumber) { flashMessage += "파일 개수가 초과되었습니다. 최대개수 " + posblAtchFileNumber + "개" + "\\n"; posblAtchFileFlag = false; } if (!posblAtchFileFlag) p_mv.addObject("message", flashMessage); } catch(IllegalArgumentException e) { LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); } catch (Exception e) { LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); } return posblAtchFileFlag; } /** * //사용자의 조건으로 첨부 파일 제약 조건 체크 * * @param encrypt */ private boolean p_isPosblAtchFileMvWithUserSetting( List<FileVO> fileList , ModelAndView p_mv , int atchFileCnt //기존에 파일이 있는 경우 , String p_exts //가능한 확장자를 받는다. | , int p_i_file_size //파일 제한 사이즈 , int p_i_file_count //파일 제한 수량 ) throws Exception { boolean posblAtchFileFlag = true; try { LOGGER.debug("CheckFileUtil.isPosblAtchFileMvWithUserSetting()"); int fileCnt = 0; long posblAtchFileSize = p_i_file_size * 1024 * 1024 ; int posblAtchFileNumber = p_i_file_count; //String bbsTyCode = boardMaster.getBbsTyCode(); String flashMessage = ""; boolean posblAtchFileSizeFlag = true; boolean posblAtchFileExtFlag = true; String[] imgExts = p_exts.split("\\|"); Iterator<?> iter = fileList.iterator(); while (iter.hasNext()) { FileVO vo = (FileVO) iter.next(); long fileMg = Long.parseLong(vo.getFileMg()); String fileExt = vo.getFileExtsn(); if (fileMg > posblAtchFileSize) posblAtchFileSizeFlag = false; //String[] imgExts = {"gif", "jpg", "bmp", "jpeg", "png"}; //String[] imgExts = {"xlsx", "xls", "zip", "hwp", "txt", "doc", "docx", "csv"}; if (ArrayUtils.indexOf(imgExts, fileExt.toLowerCase()) == -1) posblAtchFileExtFlag = false; fileCnt++; } if (!posblAtchFileExtFlag) { for (int i=0;i<imgExts.length;i++) { if (i==0) flashMessage += imgExts[i]; else flashMessage += ", " + imgExts[i]; } flashMessage += " 형식의 확장자만 업로드 가능합니다." + "\\n"; posblAtchFileFlag = false; } if(!posblAtchFileSizeFlag) { flashMessage += "파일사이즈가 초과되었습니다. 최대크기 " + posblAtchFileSize + "mb" + "\\n"; posblAtchFileFlag = false; } if ((fileCnt+atchFileCnt) > posblAtchFileNumber) { flashMessage += "파일 개수가 초과되었습니다. 최대개수 " + posblAtchFileNumber + "개" + "\\n"; posblAtchFileFlag = false; } if (!posblAtchFileFlag) p_mv.addObject("message", flashMessage); } catch(IllegalArgumentException e) { LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage()); } catch (Exception e) { LOGGER.error("[" + e.getClass() +"] :" + e.getMessage()); } return posblAtchFileFlag; } /** * //업로드된 text 파일에서 내용 추출하기 * * @param encrypt */ //text 파일에서 추출하기 private List<String> p_extractFromTxtFile( MultipartHttpServletRequest p_multiRequest , List<String> p_sb ) throws Exception{ LOGGER.debug("CheckFileUtil.extractFromTxtFile()"); List<MultipartFile> files = (List<MultipartFile>) p_multiRequest.getFiles("file"); if(!files.isEmpty()) { if (files.get(0).getSize() > 0 && files.get(0).getOriginalFilename().split("[.]")[1].indexOf("txt") > -1) { //Multi file to file 변환해주기 File file = new File(files.get(0).getOriginalFilename()); file.createNewFile(); FileOutputStream fos = new FileOutputStream(file); fos.write(files.get(0).getBytes()); fos.close(); BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); String line = null; while ((line = reader.readLine()) != null) { p_sb.add(line); } // end while } } return p_sb; } /** * //업로드된 excel 파일에서 내용 추출하기 * * @param encrypt */ //excel 파일에서 추출하기(xls, xlsx) private List<String> p_extractFromExcelFile( MultipartHttpServletRequest p_multiRequest , List<String> p_sb ) throws Exception{ LOGGER.debug("CheckFileUtil.extractFromExcelFile()"); List<MultipartFile> files = (List<MultipartFile>) p_multiRequest.getFiles("file"); if(!files.isEmpty()) { if (files.get(0).getSize() > 0 && (files.get(0).getContentType().indexOf("spreadsheetml") > -1 || files.get(0).getContentType().indexOf("ms-excel") > -1 ) &&( files.get(0).getOriginalFilename().split("[.]")[1].indexOf("xlsx") > -1 || files.get(0).getOriginalFilename().split("[.]")[1].indexOf("xls") > -1 ) ) { String Ext = files.get(0).getOriginalFilename().split("[.]")[1]; String cellValue = ""; //엑셀 확장자에 따른 처리 로직 분리 if(Ext.equals("xls")) { HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream()); HSSFSheet sheet = workbook.getSheetAt(0); //첫번째 sheet 만 처리 for(int i=0; i< sheet.getLastRowNum(); i++){ //먼저 밸리데이션 체크(1줄은 생략) HSSFRow row = sheet.getRow(i); //열읽기 cellValue = ""; for(int j = 0 ; j < row.getLastCellNum(); j++){ //행읽기(6행까지나 2행까지만 필요) HSSFCell cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 if(cell != null){ switch(cell.getCellType()){ //숫자타임을 문자로 변환 case Cell.CELL_TYPE_NUMERIC: cell.setCellType(Cell.CELL_TYPE_STRING); } cellValue = cellValue + StringUtil.getString(cell.getStringCellValue().trim()) + "\t"; } } p_sb.add(cellValue); } }else { //확장자가 xlsx OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream()); XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기 opcPackage.close(); for(int i=0; i< sheet.getLastRowNum(); i++){ //먼저 밸리데이션 체크(1줄은 생략) XSSFRow row = sheet.getRow(i); //열읽기 cellValue = ""; for(int j = 0 ; j < row.getLastCellNum(); j++){ //행읽기(6행까지나 2행까지만 필요) XSSFCell cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 if(cell != null){ switch(cell.getCellType()){ //숫자타임을 문자로 변환 case Cell.CELL_TYPE_NUMERIC: cell.setCellType(Cell.CELL_TYPE_STRING); } cellValue = cellValue + StringUtil.getString(cell.getStringCellValue().trim()) + "\t"; } } p_sb.add(cellValue); } } //xlsx 처리 끝 } } return p_sb; } }

          
        
    
    
Copyright Yona authors & © NAVER Corp. & NAVER LABS Supported by NAVER CLOUD PLATFORM

or
Sign in with github login with Google Sign in with Google
Reset password | Sign up