Contents
1. multipart/form-data 1. multipart/form-data
POST /upload HTTP/1.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
------WebKitFormBoundary
Content-Disposition: form-data; name="username"
chatgpt
------WebKitFormBoundary
Content-Disposition: form-data; name="profileImage"; filename="cat.jpg"
Content-Type: image/jpeg
(binary content)
------WebKitFormBoundary--POST /upload HTTP/1.1
Content-Type: multipart/form-data; boundary=----juminTrump
----juminTrump
Content-Disposition: form-data; name="file1"; filename="image.jpg"
Content-Type: image/jpeg
----juminTrump
Content-Disposition: form-data; name="file2"; filename="a.png"
Content-Type: image/png
----juminTrump
Content-Disposition: form-data; name="username"
ssar
------juminTrump
Content-Disposition: form-data;
Content-Type: text/plain; charset=UTF-8
1234text와 file이 동시에 보내져서 multipart
UUID = 난수
DB에는 문자와 데이터만 넣어야됨
파일서버도 원래는 분리해야됨
img file
→ DB
→ HDD
→ 다른 컴퓨터
spring에서는 /upload/imgFile 라고하면 static 아래의 경로라고 생각
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
WebMvcConfigurer.super.addResourceHandlers(registry);
registry
.addResourceHandler("/upload/**")
.addResourceLocations("file:./upload/")
.setCachePeriod(60 * 60) // 초 단위 => 한시간
.resourceChain(true)
.addResolver(new PathResourceResolver());
}
}- .addResourceHandler("/upload/**")
- 발동 조건
- static 폴더로 가려던걸 interceptor가 동작
- 웹서버로 못가게 막는다??
- .addResourceLocations("file:./upload/")
- file: - 파일 프로토콜
- 절대경로 가능 (spring에게 절대경로에 대한 권한 생김)
MultipartFile: "입력" (요청 시 파일 수신용)
String: "출력" (DB 저장 및 뷰 출력용)Share article