[Spring Boot] 55. 사진 업로드

김주희's avatar
Apr 29, 2025
[Spring Boot] 55. 사진 업로드

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 1234
 
text와 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()); } }
 
  1. .addResourceHandler("/upload/**")
    1. 발동 조건
    2. static 폴더로 가려던걸 interceptor가 동작
    3. 웹서버로 못가게 막는다??
  1. .addResourceLocations("file:./upload/")
    1. file: - 파일 프로토콜
    2. 절대경로 가능 (spring에게 절대경로에 대한 권한 생김)
 
 
MultipartFile: "입력" (요청 시 파일 수신용) String: "출력" (DB 저장 및 뷰 출력용)
Share article

jay0628