inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서블릿과 파일 업로드2

파일 업로드 중 에러 발생

9693

기호리의우당탕탕백엔드도전기

작성한 질문수 3

2

서블릿과 파일 업로드2 를 학습하던 중

삭제가 불가능하다는 예외가 발생하면서

여러 방법을 시도해도 해결되지 않아 문의 드립니다.

 

개발 환경

window

사용중인 스프링 부트 버전 :  2.7.8

자바 언어 버전 : 11

 

properties 설정

경로 설정은 위의 사진처럼 했습니다.

 

에러 로그를 보면 삭제를 할 수 없다고 뜨면서 예외가 발생합니다.

 

로그 속에 있는 경로로 들어가 직접 파일 제거 시도

-> 서버가 내려갈 경우 파일이 삭제되는 것 확인 가능 해당 부분이 문제라고 생각됩니다.

해결하기 위해 했던 노력

  1. 관리자 권한으로 프로그램 실행

    결과 : 실패

  2. 강의 자료 코드 그대로 옮겨 오기

    결과 : 실패

  3. 강의 소스 코드 그대로 옮겨 오기

    결과 : 실패

  4. 경로 바꿔 보기

    결과 실패

총 4가지의 시도 결과 전부 실패해 문의 드립니다.

 

 

에러 발생 로그

내가 생각하는 로그 핵심 문제 원인

2023-01-22 21:42:00.789 WARN 31328 --- [nio-8080-exec-3] s.w.m.s.StandardServletMultipartResolver : Failed to perform cleanup of multipart items

2023-01-22 20:48:55.796 ERROR 28536 --- [nio-7070-exec-3] o.apache.coyote.http11.Http11Processor : Error processing request

java.io.UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:441) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]

Caused by: java.io.IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

... 13 common frames omitted

2023-01-22 20:48:55.796 DEBUG 28536 --- [nio-7070-exec-3] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CLEAN] reported while processing request

java.io.UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:441) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]

Caused by: java.io.IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

... 13 common frames omitted

2023-01-22 20:48:55.798 ERROR 28536 --- [nio-7070-exec-3] o.a.coyote.http11.Http11NioProtocol : Error reading request, ignored

java.io.UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.CoyoteAdapter.log(CoyoteAdapter.java:515) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:429) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]

Caused by: java.io.IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

... 13 common frames omitted

2023-01-22 20:48:55.799 ERROR 28536 --- [nio-7070-exec-3] org.apache.tomcat.util.net.NioEndpoint : Error running socket processor

java.io.UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete(DiskFileItem.java:431) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.core.ApplicationPart.delete(ApplicationPart.java:54) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.Request.recycle(Request.java:483) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.CoyoteAdapter.log(CoyoteAdapter.java:515) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:539) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.http11.Http11Processor.recycle(Http11Processor.java:1439) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.release(AbstractProtocol.java:1098) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:1056) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.71.jar:9.0.71]

at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]

Caused by: java.io.IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\localhost\ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp

... 14 common frames omitted

 

spring mvc MVC

답변 2

25

Hansu Park

저도 동일한 오류를 겪었는데 해결책을 찾아 공유합니다.

ServletUploadControllerV2에 메서드에

inputStream.close(); 을 추가해주니 오류가 사라졌어요.

//파일에 저장하기
 if (StringUtils.hasText(part.getSubmittedFileName())) {
 String fullPath = fileDir + part.getSubmittedFileName();
 log.info("파일 저장 fullPath={}", fullPath);
 part.write(fullPath);
 }
inputStream.close();

로 적으면 되네요

(for (Part part : parts) 끝나는 부분에 inputStream.close(); 작성)

 

 

스프링 부트는 2.7.7

인텔리제이는 22.3.1

자바는 11 사용했습니다.

0

byeongkuk lim

공유 감사합니다 ^3^

1

기호리의우당탕탕백엔드도전기

와 감사합니다!! 덕분에 해결되었어요!

0

zerom980706

감사합니다 빠르게 오류를 해결할 수 있었습니다

0

doc9733

덕분에 해결했어요!

1

이주영

감사합니다!

0

OMG

안녕하세요. 이기호님, 공식 서포터즈 OMG입니다.
.

개발환경: MAC

자바 ver: 11

Boot ver: 2.7.8

 

강의에서 제공해드리는 코드에서 버전을 2.5.1-> 2.7.8로 변경하여 동일한 버전으로 테스트 했을 때 문제가 없었습니다.

 

강의에서 제공해드리는 프로젝트 코드로 확인해보시겠어요?

파일 경로 설정으로 보아 윈도우 사용자 이신 것 같습니다.

코드의 문제이거나 윈도우 + 스프링부트 버전(2.7.8)에서 발생하는 문제일 수도 있을 것 같아요.

 

강의에서 제공해드리는 프로젝트 코드로(부트 버전 2.5.1) 확인하신 후 이상 없을 경우 프로젝트의 버전을 2.7.8로 변경하여 확인 부탁드립니다.

 


.
감사합니다.

0

OMG

부가 설명을 더 드리면 아래 링크에서도 동일한 문제가 발생하였고, 해당 수강생분은 버전을 낮췄을 때 이상이 없다고 한 것으로 보아 버전 문제가 어느정도 맞을 것으로 예상하는데요. (윈도우)

강의에서 제공해드리는 코드로 확인 + 버전업을 하여 확인하여 동일한 이슈인지 확인이 필요할 것 같네요^^!

https://www.inflearn.com/questions/750660/%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C-%EC%8B%9C-java-io-uncheckedioexception-%EC%98%88%EC%99%B8-%EB%B0%9C%EC%83%9D

0

기호리의우당탕탕백엔드도전기

제가 만들었던 코드를 사용했을 때 2.7.7 버전부터 문제가 발생하고 있었으며 그 이전 버전으로 내렸을 때는 문제가 없었습니다.

테스트 해본 버전으로는 2.5.X부터 테스트 했었고, 3.x.x 버전대는 테스트하지 않았습니다.

 

 

또한 강의 자료의 버전을 올려서 테스트 할 경우에도 해당 문제가 발생하고 있습니다.

저 또한 해당 링크의 질문 처럼 버전이 문제인 것 같습니다.

버전을 낮추어 해결하는 방법도 있지만 다른 방법으로 해결할 수 없을 까? 하는 생각에 질문드립니다!

0

OMG

버젼이 올라갔을 떼 오류가 발생하는 이유는 크게

1) 스프링 부트의 자체 오류

2) 인텔리제이 혹은 그 외 오류 (인텔리제이, 메이븐 저장소 등)

두 가지 이유가 있는데요.

(1) 부트 자체 오류라고 한다면 오류가 이슈로 올라오고, 버전업 되면서 해결이 되고

(2) 부트 오류가 아닌 그 외 오류라고 한다면 자체적으로 해결하여 버전업이 되지 않더라도 해결이 됩니다.

자세한 원인은 영한님과 서포터즈가 확인 후 메뉴얼 수정 혹은 해당 문제가 발생하여 질문을 올리신 글에 답변을 드리고 있으니 참고 부탁드립니다.

이미지 업로드와 db 트랜잭션 묶는법

0

43

1

Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4

0

53

2

MessageSourceTest 코드

0

49

1

인터셉터 에러 설정

0

48

1

resolveArgument()메서드 질문

0

57

1

43강 검증1 에서 실패 로직 관련 질문있습니다.

0

58

2

타임리프 3.X 버전 rendering, serializer 에러 해결 방법

2

133

3

스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ

0

90

3

pdf 오타 문의

0

57

1

ItemUpdateForm 검증 관련 질문입니다.

0

49

1

22page 링크 주소 변경

0

59

2

특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문

0

53

1

섹션3번 수업에 대한 질문입니다.

0

80

2

@Autowired 보다 더 좋은 방법이 어떤 걸까요?

0

85

2

타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.

0

66

1

자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다

0

142

3

스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문

0

63

1

톰캣 에러 페이지가 안보입니다.

0

104

2

apiEceptionController에서 센드 에러 호출하면 안되는지?

0

81

1

세션 타임아웃시 쿠키 삭제 방법이 없나요?

0

118

2

ApiExceptionController 질문드립니다.

0

64

1

셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?

0

66

1

MemberRepository 필드의 fianl 선언 유무

0

85

2

혹시 index.html 에서는 fragment 사용이 안되는건가요

0

58

1