๐ ์คํ๋ง ๋ถํธ๋ก ํ์ผ ์ ๋ก๋ ๋ค์ด๋ก๋ ๊ตฌํ ๋ฐฉ๋ฒ
์ฒซ ํ์ฌ์ ์์ต๊ณผ์ ๋ก ํ์ผ ์ ๋ก๋ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ ๋ง๋ ์ ์ด ์๋๋ฐ ๊ฒ์์ ํ๋ฉด JSP๋ก ๊ตฌํ๋ ์์ ๊ฐ ๋ง์์ ํ๋ก ํธ๊ฐ React๋ Vue์ผ๋ ์ด๋ป๊ฒ ํ์ผ ์ ๋ก๋ ๋ค์ด๋ก๋ ๊ตฌํํด์ผ ํ๋์ง ๋ง๋งํ์๋ค. ๋คํ์ด ๊นํ๋ธ์์ ์ ์ ๋ฆฌ๋ ์ฝ๋๋ฅผ ์ฐพ์์ ๊ณผ์ ๋ฅผ ์ ๋ง๋ฌด๋ฆฌ ํ ์ ์์์ง๋ง ํด๋น ๊นํ๋ธ ์์ ๋ฅผ ์ฐธ๊ณ ํด์ ๊ตฌํ ํ ๋ ์์ฌ์ ๋ ์ ๊ณผ ๊ทธ๋๋ ์ ๋ชฐ๋๋ ๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
1๏ธโฃ Failed to perform cleanup of multipart items ์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
- ์คํ๋ง ๋ถํธ ๋ฒ์ ๋ณ๊ฒฝ์์ inputStream.close() ์ถ๊ฐํ๋ ๊ฑธ๋ก ์์
- Caused by: java.io.IOException: Cannot delete ๊ฒฝ๋ก\ํ์ผ์ด๋ฆ
์ฐธ๊ณ ํ ๊นํ๋ธ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ ํ์ผ ์ ๋ก๋๋ฅผ ํ๋ ค๊ณ ํ๋ฉด ์์ ๊ฐ์ ์๋ฌ๊ฐ ๊ณ์ ๋ด๋๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํด์ ์คํ๋ง ๋ถํธ ๋ฒ์ ์ ๋ฎ์ถฐ์ ๊ตฌํํ๋ค. ํ์ง๋ง ์ต๊ทผ์ ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ์ ๋ง๋ค๋ฉด์ ๋ ์ด ์ค๋ฅ๋ฅผ ๋ง๋ฌ๊ณ ์ด๋ฒ์๋ ๋ฒ์ ์ ๋ฎ์ถ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์ง ์์๋ค. ๋ฌธ์ ์์ธ์ ์ฐพ์๋ณด๋ ์ด๋ ค์๋ inputStream์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์์ ๊ธฐ์กด
file.getIntputStream() ๋ถ๋ถ์ InputStream ๊ฐ์ฒด์ ๋ด์๋ค๊ฐ Files.copy๊ฐ ๋๋ ํ์ .close()๋ก ๋ซ์์ฃผ๋ ๋ฒ์ ์ ๋ฎ์ถ์ง ์์๋ ์คํ๋ง ๋ถํธ 2.7.8 ๋ฒ์ ์์๋ ์ค๋ฅ์์ด ํ์ผ์ด ์ ์ ์ฅ๋์๋ค.
2๏ธโฃ ์ ๊ทํํ์
ํ์ผ ๋ค์ด๋ก๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ณด๋ฉด {fileName:.+} ๊ฐ ์๋๋ฐ ์ฌ๊ธฐ์ fileName์ pathVariable๋ฅผ ์๋ฏธํ๊ณ fileName์ .+ ๊ฐ ๋ค์ด๊ฐ ์ ์๋ค. ์ฌ๊ธฐ์์ . ํ๊ณ + ์ ๊ทํํ์์ ๋ป์ ๋ค์๊ณผ ๊ฐ๋ค.
- .(dot): ANY ONE character except newline. Same as [^\n]
- +: one or more (1+), e.g., [0-9]+ matches one or more digits such as '123', '000'
๋ฐ๋ผ์ fileName์๋ ํ๊ฐ ์ด์์ ์ด๋ค ๋ฌธ์๋ ๋ค์ด๊ฐ ์ ์๋ค.
๊ฐ๋จํ ํ์ผ ์ ๋ก๋ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ๋ง ๊ตฌํ๋ ์ฝ๋๋ฅผ ๊นํ๋ธ ์ ์ฅ์์ ์ฌ๋ ค๋์๋๋ฐ, ํฌ์คํธ๋งจ์ ํ์ฉํด์ ๊ธฐ๋ฅ์ ํ ์คํธ ํด๋ณผ ์ ์๋ค.
// TODO. ์คํ๋ง ๋ถํธ 3.*.* ๋ ๋ฒ์ ์์๋ ๊ธฐ์กด ์ฝ๋๋ ๋ฌธ์ ์์ด ์คํ์ด ๋๋๋ฐ javax.servlet (JavaEE)์์ jakarta.servlet (Jakarta EE)๋ก ๋ฐ๋๋ฉด์ ์์ํ์ผ์ ์ญ์ ํ๋ ๋ถ๋ถ์ด ์ฌ๋ผ์ง๊ฑฐ๋ ์์ ๋ ๊ฒ ๊ฐ๋ค. ์ด ๋ถ๋ถ๋ ๋์ค์ ๋ค์ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
// TODO. ํ์ผ ๊ถํ ๋ฐ ๊ฒฝ๋ก์ ๋ํ ๋ถ๋ถ
์ฐธ๊ณ ์๋ฃ
https://www.callicoder.com/spring-boot-file-upload-download-rest-api-example/
https://github.com/callicoder/spring-boot-file-upload-download-rest-api-example
https://www3.ntu.edu.sg/HOME/EHCHUA/PROGRAMMING/java/Java_Regexe.html
https://www3.ntu.edu.sg/HOME/EHCHUA/PROGRAMMING/howto/Regexe.html
'์คํฐ๋ > ์๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ฌด ํจ์จ์ ์ฌ๋ ค์ฃผ๋ Intellij ๋จ์ถํค (์๋์ฐ ๊ธฐ์ค) (1) | 2024.02.25 |
---|---|
์๋ฐ iterators๋? (0) | 2024.02.11 |
์๋ฐ์์ Map ์ํ ๋ฐฉ๋ฒ (0) | 2024.01.27 |
Lambdas and Stream (0) | 2023.01.19 |
Garbage Collection in Java (0) | 2022.10.28 |
๋๊ธ