Tomcat does not create temporary directory used to store file uploads when it does not exist
μŠ€ν”„λ§ λΆ€νŠΈ 파일 μ—…λ‘œλ“œ μ—λŸ¬ The temporary upload location [] is not valid

일반적으둜 자주 λ°œμƒν•˜λŠ” 상황은 μ•„λ‹ˆμ§€λ§Œ μ•„λž˜μ™€ 같이 파일 μ—…λ‘œλ“œ μ‹œ μž„μ‹œ 디렉토리에 λŒ€ν•œ μ‚­μ œ 문제둜 λ©€ν‹°νŒŒνŠΈ μš”μ²­μ— λŒ€ν•΄ μž„μ‹œμ μœΌλ‘œ μ €μž₯ν•˜λŠ” κ³Όμ •μ—μ„œ NoSuchFileException이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ—μ„œ μž„μ‹œ 디렉토리 κ²½λ‘œμ— μ‘΄μž¬ν•˜λŠ” νŒŒμΌμ΄λ‚˜ 디렉토리λ₯Ό 일정 κΈ°κ°„ μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μ„ 경우 μ‚­μ œν•˜λ„λ‘ λ˜μ–΄μžˆλŠ” λΆ€λΆ„μœΌλ‘œ μΈν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„λ‘œ 파일 μ—…λ‘œλ“œκ°€ 주기적으둜 μš”μ²­λ˜μ§€ μ•ŠλŠ” ν•œ λ©€ν‹°νŒŒνŠΈμ— λŒ€ν•œ μž„μ‹œ 파일이 λ§Œλ“€μ–΄μ§€μ§€ μ•ŠμœΌλ―€λ‘œ μœ„ ν˜„μƒμ΄ λ‚˜νƒ€λ‚˜κ²Œ λ©λ‹ˆλ‹€.

μ–Έλ”ν† μš°μ—μ„œλŠ” MultiPartParserDefinition$MultiPartUploadHandler의 beginPartλΌλŠ” ν•¨μˆ˜μ—μ„œ λ©€ν‹°νŒŒνŠΈ 폼 데이터에 λŒ€ν•΄ μž„μ‹œ νŒŒμΌμ„ λ§Œλ“€κ³  읽어듀이도둝 λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν”„λ§ λΆ€νŠΈ 기반의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ—μ„œ λ©€ν‹°νŒŒνŠΈμ— λŒ€ν•œ λ‘œμΌ€μ΄μ…˜ 속성을 μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μ–Έλ”ν† μš°λŠ” μ„œλΈ”λ¦Ώ 배포 μ‹œ μ‹œμŠ€ν…œμ˜ μž„μ‹œ 디렉토리 κ²½λ‘œμ— λ©€ν‹°νŒŒνŠΈ μ—…λ‘œλ“œλ₯Ό μœ„ν•œ 폴더λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

Spring Demo Undertow λ¦¬νŒŒμ§€ν† λ¦¬λ₯Ό ν΄λ‘ ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같이 ν˜„μž¬ 싀행쀑인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ—μ„œ λ°”λΌλ³΄λŠ” 파일 μ—…λ‘œλ“œ κ²½λ‘œκ°€ 둜그둜 좜λ ₯λ©λ‹ˆλ‹€.

Current temp dir: C:\Users\Mambo\AppData\Local\Temp\undertow.8080.5583604686546214060

μœ„ 둜그λ₯Ό 좜λ ₯ν•˜λŠ” MultipartCustomizerλŠ” UndertowDeploymentInfoCustomizer μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 클래슀둜 μ‹œμŠ€ν…œ κΈ°λ³Έ μž„μ‹œ 디렉토리λ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ— 주기적인 μŠ€μΌ€μ€„λ‘œ 파일 μ—…λ‘œλ“œ κ²½λ‘œκ°€ μ‚­μ œλ˜μ—ˆλŠ”μ§€λ₯Ό ν™•μΈν•˜κ³  λ³΅κ΅¬ν•©λ‹ˆλ‹€. λ©€ν‹°νŒŒνŠΈ μš”μ²­μ— λŒ€ν•œ 파일 μ—…λ‘œλ“œ 경둜λ₯Ό λ³„λ„λ‘œ μ§€μ •ν•˜μ§€ μ•Šμ€ λ¦¬λˆ…μŠ€ ν™˜κ²½μ—μ„œλŠ” 파일 μ—…λ‘œλ“œλ₯Ό μ‹œλ„ν•˜λŠ” κ²½μš°μ— 따라 λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ—μ„œ 파일 μ—…λ‘œλ“œλ₯Ό μœ„ν•œ 폴더λ₯Ό μ‚­μ œν•  κ°€λŠ₯성을 λ‚΄μž¬ν•˜κ³  μžˆμœΌλ―€λ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μž¬μ‹€ν–‰ν•˜μ§€ μ•Šμ•„λ„ μžλ™μ μœΌλ‘œ μ²˜λ¦¬ν•˜κ±°λ‚˜ μ‚­μ œλ₯Ό λ°©μ§€ν•˜λŠ” 것을 λ„μ™€μ£ΌλŠ” νŠΈλ¦­μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ©€ν‹°νŒŒνŠΈ μš”μ²­μ΄ μ •μƒμ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 경우 λ§Œλ“€μ–΄μ§„ μž„μ‹œ 파일이 μžλ™μ μœΌλ‘œ μ‚­μ œλ˜λ―€λ‘œ μ‹œμŠ€ν…œ κΈ°λ³Έ μž„μ‹œ 디렉토리λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒλ³΄λ‹€λŠ” λ³„λ„μ˜ 파일 μ—…λ‘œλ“œ 경둜λ₯Ό μ§€μ •ν•˜κ³  주기적으둜 μ‚­μ œλ˜μ§€ μ•Šκ³  λ‚¨μ•„μžˆλŠ” νŒŒμΌλ“€μ΄ μžˆλŠ”μ§€ κ΄€λ¦¬ν•˜λŠ” 것이 더 쒋은 λŒ€μ•ˆμž…λ‹ˆλ‹€.