본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 쇼핑몰 - 18 상품 이미지 등록 MainImg 하드코딩

by 환풍 2023. 3. 30.
728x90
반응형

reg_item.html

multiple은 이미지 파일을 여러개 선택할 수 있게 할 수 있다.

form태그에 enctype="multipart/form-data" 을 반드시 적어주어야 이미지 파일을 넘길 수가 있다.

SUB IMAGE 파일 선택 버튼을 누르면 이렇게 두개가 선택되는 것을 확인할 수 있다.

 

AdminController 컨트롤러

@PostMapping으로

컨트롤러로 넘어와서 매개변수에 MultipartFile 라는 인터페이스를 받아와서  mainImg변수를 생성해준다.

mainImg는 html에서 Main 이미지의 name 속성 값이다. 

 

mainImg 첨부파일에 대한 원본 파일명을 불러오는 것이다.

 

UUID는 아이디를 랜덤한 문자열을 만들어 줄 수 있는 기능이 있다. 

String str = "abcdab.jpg"; str.indexOf("c"); 의 값은 2
str.indexOf("a"); 의 값은 0
indexOf는 글자에서 제일 첫번째에 있는 문자열의 순서 번호를 알려준다.
str.lastIndexOf("a");의 값은 4
lastIndexOf는 글자에서 가장 마지막번째에 있는 문자열의 순서 번호를 알려준다.

originFileName.substring(0, 4); //originFileName의 문자열 0번째부터 4개 출력
originFileName.substring(0); //originFileName의 문자열 0번째부터 끝까지

 

itemVO에 데이터를 넣어주어야 한다. 엄밀히 말하자면 ITEM PRICE 의 자료형이 int형이라서 정수가 하나 들어가야 오류가 안난다.  자료를 넣지 않으려면 컨트롤러에서 itemVO를 지워주고 실행해보면 된다.

첨부 될 파일명에는 랜덤한 글자가 들어오고, 확장자 명까지 들어오는 것을 확인할 수 있다.

 

static의 경로에 upload 파일을 생성한다.

D:\workspaceSTS\Shop\src\main\resources\static\upload 와 같이 해당 upload 파일 주소를 찾아가 복사한다.

 

AdminController 컨트롤러

이후 컨트롤러로 가서 파일 업로드 위치 변수를 만들고, 붙여넣기 해준다.

 

" " 쌍따옴표 안에서는 \ 역슬러쉬가 두개 나오는데,

문자로 인식 해주기 위해 쌍따옴표 안에는 \ 역슬러쉬를 쓰면서 뒤에 있는 글자가 문자로 나타나게 해주는 기능이다. 

 

그리고 final을 주어 더이상 값이 변하지 않도록 해준다. 이렇게 지정해주면 변수 값을 바꿀 수 없다.

이것을 상수라고 하는데,변수 이름을 대문자로 바꿔줘야한다.

Util 패키지 생성, ConstVariable 클래스

AdminController 컨트롤러

새로운 패키지 util을 만들고, 그 안에 ConstVariable 클래스를 만들었다.

ConstVariable 클래스

AdminController 컨트롤러

이렇게 클래스에서 static 변수로 접근시켜주면,

다른 패키지에서 객체를 생성하지 않고, 바로 클래스명.상수명 으로 불러올 수 있다.

 

File file = new File(ConstVariable.UPLOAD_PATH + attchedFileName); 만약 이렇게 파일 업로드를 하게되면 

ex_) c:javajava.jpg  이렇게 불러온다. 정상적으로 오기 위해선 c:/java/java.jpg가 맞지 않을까?

ConstVariable 클래스

그래서 util 패키지에 만든 클래스로 가서 맨 뒤에 역슬래쉬 \\ 이렇게 두개를 붙여준다.

AdminController 컨트롤러

다시 컨트롤로 돌아와서 mainImg.transferTo(file); 을 써주고, 에러가 나는데 try/catch문으로 만들어준다.

이렇게 문장을 바꿔주고, catch문 하나를 지우고 매개변수로 Exception 을 넣어주면 된다.

이렇게 첨부파일을 등록하고 버튼을 누르면 upload에 파일이 들어간 것을 확인할 수 있다.

 

끝으로, mainImg가 첨부가 됐을 때만 등록하기 위해서 if 문을 추가해줬다.

 

여기까지가 mainImg , 첨부 파일 하나만 받았을때 작업을 완료한 것이다. 

 

다음 포스팅에서는 서브 이미지 등록을 알아보자.

728x90
반응형

댓글