μ€νλ§ λ©ν°ννΈ
AWS S3μ νμΌμ μ μ₯νκΈ° μν΄μ λ©ν°ννΈ μ λ‘λλ₯Ό μννλ κ²μ²λΌ μΉ μ ν리μΌμ΄μ μμ λ°μ΄λ리 λ°μ΄ν°λ₯Ό μ λ¬νκΈ° μν΄ λ©ν°ννΈ νΌ λ°μ΄ν° νμμΌλ‘ μ¬μ©μκ° μ νν νμΌμ μ λ¬ν©λλ€. μ€νλ§ νλ μμν¬λ₯Ό ν΅ν΄ λ°±μλ μ ν리μΌμ΄μ μ μμ±νλ κ²½μ° μμμΌν λ©ν°ννΈμ λν΄μ κ°λ¨ν μ 리ν΄λ³΄λ €κ³ ν©λλ€.
MultipartFile μ RequestPart
μ€νλ§ μ»¨νΈλ‘€λ¬ νΈλ€λ¬ ν¨μμ MultipartFile νλΌλ―Έν°λ RequestParam, ModelAttribute κ·Έλ¦¬κ³ RequestPart μ΄λ Έν μ΄μ μ μ μΈνμ¬ λ°μΈλ©μ μνν μ μμ΅λλ€. λλΆλΆ RequestParam κ³Ό ModelAttributeλ₯Ό μ¬μ©νμ§λ§ κ°μΈμ μΌλ‘ μ½λ κ°λ μ±μ λ λͺ ννκ² νκΈ° μν΄ λ©ν°ννΈλ₯Ό μν λͺ©μ μΌλ‘ μΆκ°λμ΄μλ RequestPartλ‘ μ μΈνμ¬ μ¬μ©νλ νΈμ λλ€.
@RestController
public class FileController {
@RequestMapping(value = "/file", method = {RequestMethod.POST, RequestMethod.PUT})
public ResponseEntity<String> upload(@RequestPart("file") MultipartFile file) {
return ResponseEntity.ok(file.getOriginalFilename());
}
}
StandardServletMultipartResolver
λ©ν°ννΈ νΌ λ°μ΄ν°(multipart/form-data) μμ²μ λν΄μ StandardServletMultipartResolverκ° λ©ν°ννΈμ ν¬ν¨λμ΄μλ λ°μ΄λ리λ₯Ό StandardMultipartFileλ‘ λ³νλ©λλ€. μ΄λ, λ©ν°ννΈμ ν¬ν¨λ λ°μ΄λ리λ μμ ν΄λμ μ μ₯λλ©° μμ²μ΄ μ²λ¦¬λ μ΄νμ MultipartFilerμ μν΄ μμλ‘ μ μ₯λ νμΌμ μ΅μ’ μ μΌλ‘ μμ λ©λλ€.
MaxUploadSizeExceededException π₯
μ€νλ§ λ©ν°ννΈ κΈ°λ³Έκ° μ€μ μ μν΄ νμΌ λΉ 1MB λλ μμ² λΉ 10MB μ νμΌλ‘ MaxUploadSizeExceededExceptionμ΄ λ°μν μ μμ΅λλ€. λ°λΌμ, νμΌ μ λ‘λ κΈ°λ₯μ΄ νμν κ²½μ° μμλλ νμΌ μ΅λ μ¬μ΄μ¦μ λ°λΌ μ€μ ν΄λλ κ²μ΄ μ’μ΅λλ€.
application.propertiesspring.servlet.multipart.max-file-size=10MB spring.servlet.mulitpart.max-request-szie=100MB
Multipart Temp Directory
λ©ν°ννΈ νμΌμ΄ μ μ₯λλ κ²½λ‘λ₯Ό μ§μ νμ§ μμΌλ©΄ μ΄μ체μ μ μμ λλ ν 리λ₯Ό μ¬μ©νκ² λ©λλ€. μ€νμ€μΈ μ ν리μΌμ΄μ μμ μ€λ«λμ νμΌμ΄ μ λ‘λλμ§ μμμ μ ν리μΌμ΄μ μ΄ μμ±νλ κ²½λ‘λ₯Ό 리λ μ€μ κ°μ μ΄μ체μ μμ μ 리ν΄λ²λ¦¬λ κ²½μ° νμΌ μ λ‘λλ₯Ό μ€ν¨νλ μ¬μ κ° μμμ΅λλ€. μΈλν μ° μμ λλ ν 리 μμ λ°©μ§μ κ°μ΄ μμ λλ ν 리λ₯Ό 볡ꡬνκ±°λ λ©ν°ννΈ λ°μ΄λ리λ₯Ό μμ μ μ₯νκΈ° μν κ²½λ‘λ₯Ό λ³λλ‘ μ§μ νλ κ²μ΄ μ’μ΅λλ€.
spring.servlet.multipart.location=/home/ec2-user/tmp