<form> 속성 : enctype="multipart/form-data"
기본 양식 content-type
application/x-www-form-urlencoded
<multipart-config>
<!-- 한번에 보낼 수 있는 파일 용량 설정-->
<!--한 파일당 최대 용량-->
<max-file-size>20971520</max-file-size> <!-- 1MB * 20 -->
<!--한번에 보낼 수 있는 최대 용량(최대 업로드 파일 용량)-->
<max-request-size>62914560</max-request-size> <!-- 60MB -->
<file-size-threshold>20971520</file-size-threshold>
</multipart-config>
bit - 8
1byte - 8 bit
1K바이트 - 1024byte
1메가바이트 - 1024Kbyte
한 파일당 20M로 한정하고싶을때
20mb -> 1024 1024 20
요청 컨트롤러와 뷰작성


파트별로 구분할 수 있는 키값이 포함됨

요청데이터에 주입하면 파일 데이터가 여기로 넘어옴
파일을 바로 업로드 할 수있게 해준다.

@RequestPart -> 어떤이름으로 넘어올지 알려줌


파일 이름 가져 올 수 있다.
MultipartFile[]와 같은 배열로 주입◻ MultipartFile 인터페이스



파일 정적 경로 설정

파일 설정 클래스

파일 설정 추가



설정클래스 정적 내부클래스로 분리함
-> 빈 분리를 위해
개발 환경과 실제 사용 환경이 다를 수 있기 때문에 프로파일 설정에 따라서 분리해줌
profile이 dev일 경우 DBConfigDev 설정 파일을 보고 빈을 생성해줌
prod일 경우 DBConfigProd를 보고 빈을 생성해줌
.env.dev 파일과 .env.prod파일을 만들어서 개발용 환경변수, 배포용 환경변수를 따로 관리함
<init-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</init-param>

<init-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</init-param>

Profile을 설정하지 않았을 경우에는 오류발생!
!prod로 @Profile 설정했을 경우 -> dev 설정 빈으로
!dev로 @Profile 설정했을 경우 -> prod 설정 빈으로
이런 방식으로 하는건 좋지않다 계속 바꿔줘야하니까!!💢💢
🔽 🔽 🔽
위처럼 하지 말고 배포서버에서 환경변수 형태를 실행과정중에 프로필설정 바꾸기!



현재 DBConfig에서 배포하는 db계정을 코드로 쓰고 있는데 내 서버가 해킹당할 가능성이 크다. 그래서 이런식으로 연결설정을 코드 형태로 나타내는것은 옳지 않다.💢💢
🔽 🔽 🔽
환경변수 이용해서 실행과정중에 설정하자 3)번
java -jar -Dspring.profiles.active=프로필이름
System.getEnv("환경 변수명")


public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setLocations(
new ClassPathResource("db.properties"),
new ClassPathResource("info.properties"));
return configurer;
}

파일 업로드 경로가 바뀔 수 있으므로 (배포 환경에 따라서 다르게 설정할 수 있도록)



개발 pc들이 각각 다름 환경이 다르기 때문에 설정파일 한가지만 가지고 하게되면 동작이 안되는 경우가 발생한다
-> 환경변수인 spring.profiles.active로 설정파일 분리해서 읽어옴
환경변수에 따라서 설정을 읽어옴
spring.profiles.active=dev
-> application-dev (dev일경우 이거로 읽어옴)
spring.profiles.active=prod
-> application-prod




fileController 경로 수정


이렇게 수정해도 경로로 잘 이동되고 파일 올릴 수 있다.
