본문 바로가기
Spring/Spring 기초

파일 업로드 서비스impl코드

by 미눅스[멘토] 2023. 8. 2.
728x90

 

	//1) 도서정보 수정 및 첨부파일이 함께 수정
	@Override
	public int updateBookPost(BookInfoVO bookInfoVO) {
		//1 도서정보 수정
		int result = this.bookInfoDao.updateBookPost(bookInfoVO);
		
		//2) 첨부파일정보 수정
		//2-1)파일객체가 있음(파일도 수정하겠음) bookInfoVO{............bookImage=org.springfra......}
		if(bookInfoVO.getBookImage() != null) {
			log.info("파일객체가 있음");
			//업로드 폴더 설정
			String uploadFolder = "C:\\eGovFrame3.10.0\\workspace\\springProj\\src\\main\\webapp\\resources\\images";
			//연월일 촐더설정
			File uploadPath = new File(uploadFolder, getFolder());
			//만약 연월일 폴더가 없으면 생성
			if(uploadPath.exists() == false) {
				uploadPath.mkdirs();
			}
			
			//원래 파일명을 할당할 변수
			String uploadFileName = "";
			
			//파일정보를 확인해보자
			MultipartFile multipartFile =  bookInfoVO.getBookImage();
			log.info("파일명 : " + multipartFile.getOriginalFilename());
			log.info("파크기 : " + multipartFile.getSize());
			log.info("파일MIME타입 : " + multipartFile.getContentType());
			
			//같은 날 같은 이미지를 업로드 시 파일명 붕복 방지
			//java.utill.UUID => 랜덤값 생성
			UUID uuid = UUID.randomUUID();
			
			//File객체 설계(복사할 대상 경로, uuid데이터_파일명)
			//uploadPath : ....\\images\\2023\\08\\02\\
			//uploadFileName : asdfdsfa_개똥이.jpg
			uploadFileName = uuid.toString() + "_" + multipartFile.getOriginalFilename();
			File saveFile = new File(uploadPath,uploadFileName);
			
			try {
				//파일복사 실행(원본파일 객체.transferTo(설계))
				multipartFile.transferTo(saveFile);
				
				AttachVO attachVO = new AttachVO();
				//SEQ(자동검색), BOOK_ID, FILENAME
				attachVO.setBookId(bookInfoVO.getBookId());
				//web경로를 setting
				// /2023/08.02/asdfasfdk_개똥이.jpg
				attachVO.setFilename("/" + getFolder().replace("\\", "/") + "/" + uploadFileName);
				
				//ATTACH 테이블에 update처리
				result += this.bookInfoDao.addAttach(attachVO);
				
			
				return result;
			}catch (IllegalStateException e) {
				log.error(e.getMessage());
				return 0;
			}catch(IOException e) {
				log.error(e.getMessage());
				return 0;
			}
		}else {
			log.info("파일 객체가 없음");
			//2-2)파일객체가 없음(파일은 수정안함) bookInfoVO{....bookImage=null}
			return result;
		}//end if
	}
   
	//연월일 폴더 생성
	public String getFolder() {
		//2023-08-02 형식(format)지정
		//간단한 날짜 형식
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		//날짜 객체 생성(java.utill.Date)
		Date date = new Date();
		//2023-08-02
		String str = sdf.format(date);
		
		//File.separator : 윈도우 폴더 구분자(2023\\08\\02)
		return str.replace("-", File.separator);
	}

'Spring > Spring 기초' 카테고리의 다른 글

hibernate 라이브러리  (0) 2023.08.09
Spring Ajax Post방식 사용 방법  (0) 2023.08.04
e7e샘의 파일 업로드 연습  (0) 2023.08.01
보충수업 Boomerang(부메랑)  (0) 2023.07.28
Spring 정리  (0) 2023.07.27