[Salle] 4. 판매하기 페이지 (5) - 1차 완성

2020. 12. 23. 22:06프로젝트/Salle(살래) 중고거래 웹

728x90

드디어 IMG 파일 로컬폴더 저장 & 파일정보 DB 저장을 끝으로 상품 판매하기 페이지 1차 구현을 완성시켰다. 내일 5개 이미지까지 등록해주는 서브 기능까지 마치면 100% 1차 구현이 끝난다 :)

요약

  • TODO: IMG 파일 로컬폴더에 저장하고 파일정보는 DB에 저장하기

TIL

  • Java

    • FileSystemView: File 타입으로 반환해주는 메서드를 가진 API

  • Spring

    • MultipartFile: HTTP가 파일 컨텐츠와 메타정보를 묶어 보내기 위해 기능을 해주는 API. getOriginalFilename() - 사용자가 업로드한 파일명을 반환해준다.

    • @Bean: @Component 밑으로 @Controller, @Service, @Repository 이 상속받아진다.

    • @Component: @Autowired가 작동할 수 있도록 Bean 객체를 등록해주는 역할을 한다.

  • HTML

    • <input type=hidden...>: 사용자가 봐선 안될 데이터나 토큰을 전달할 때 사용하는 type이다.

진행사항

  • IMG 파일을 어떻게 로컬폴더에 저장할 것인지?

    • HTTP multipart는 파일 컨텐츠와 메타 정보를 동시에 묶어서 보낼 수 있도록 해준다.

    • IMG 파일 등록하기 (참고링크)

    • IMG 파일 업로드 하는 spring boot HTTP multipart 개념 (참고링크)

    • MultipartFile API의 transferto() - (경로로 파일을 전달해준다.) 로 저장한다.

  • IMG 파일이 2개 이상일 땐 어떻게 저장할 것인지?

    • <input file> multiple로 설정하고 Controller에선 List에 MultipartFile 담아서 작동해봐야겠다.

    • List<MultipartFile>로 설정 → list.size() 만큼 반복문 돌면서 filename 생성하고 filetransferto저장해준다. → ProductVo의 img_file_1,2,3은 어떻게 저장해줄 것인지? → Javascript의 filereader로 파일저장까지 가능한 것 같다. 방법찾기.

  • IMG 파일정보는 어떻게 받아서 DB 어디에 저장해줄 것인지?

    • MultipartFile API의 getOriginalFilename() - (사용자가 업로드한 파일명을 반환해줌)으로 originalfile 컬럼을 추가해 저장해준다.

    • filesOriginName? Product 테이블에 저장해줄 것이고 컬럼은 추가해줘야됨

    • filename(DB에 저장하기 위해 만든 파일명), fileoriginname(업로드할 때 파일명)

    • 파일정보를 받는 법은? (참고링크)

이슈

  • Controller에 @Autowired 주입된 객체가 Bean not found 오류발생

    • spring boot가 클래스를 인식하기 위해선 @Component로 표시해줘야 Bean 등록된다.

  • pr_price(INT) 정규식표현으로 천단위 콤마가 들어가졌는데 String으로 인식한다.

    • 천단위 콤마 넣기 전의 값을 INT로 변환해 DB에 추가한다.