sitelink1 https://stackoverflow.com/questions/1388...empty-list 
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

List items = upload.parseRequest(request); // items 의 list size(length) 가 0

 

org.apache.commons.fileupload.servlet.ServletFileUpload 클래스를 이용하여 파일을 저장할때

parseRequest(request) 함수를 실행하여 아이템 리스트를 가져오는데 해당 리스트가 비어있는 오류가 있었다. (분명 클라이언트에서는 multipart data 를 전송한 것을 확인함)

그리고 여러 테스트를 통해 parseRequest() 함수 호출전에 HttpServletRequest 객체의 parameter 를 접근하는 함수를 실행시 해당 오류가 발생함을 알게 되었다.

 

요청 본문을 미리 (암시적으로) 구문 분석한 경우 해당 시점에서는 요청 본문이 비어 있게 된다. 

HTTP 요청 본문은 한 번만 읽고 구문 분석(read/parsed) 할 수 있다 (클라이언트가 한 번만 보냈고 여러 번 보내지 않기 때문 - sitelink1 참고)

그래서 parseRequest() 호출전에 javax.servlet.http.HttpServletRequest 클래스의 다음의 함수들이 호출되지는 않았는지 살펴봐야 한다.

 

  • request.getParameter();
  • request.getParameterMap();
  • request.getParameterNames();
  • request.getParameterValues();
  • request.getReader();
  • request.getInputStream();
  • request.getParts();

 

이 내용은 servlet container 의 기본 동작으로 현재의 서블릿 버전(4.0) 에서도 동일한 매커니즘으로 동작하고 있다.

때문에 spring 에서는 이를 우회하기 위해 MultipartHttpServletRequest 클래스를 제공하는 것으로 보인다. (spring은 사용해보지 않아서 잘 모름)

 

번호 제목 글쓴이 날짜 조회 수
351 [Gemini] HttpURLConnection 클래스를 이용한 데이터 전송 방식 비교 황제낙엽 2024.03.14 6
350 google-auth-library-oauth2-http 라이브러리 다운로드 황제낙엽 2023.11.19 6
349 firebase-admin-java 라이브러리 다운로드 (firebase admin sdk library) 황제낙엽 2023.11.19 1
348 Enum 활용 (개인블로그, Effective Java) file 황제낙엽 2023.11.02 1
347 Enum 활용 (우아한기술블로그) file 황제낙엽 2023.11.02 4
346 servlet name 에 camel case 를 사용해서는 안되는 이유 황제낙엽 2023.10.24 2
345 org.apache.commons.fileupload.servlet.ServletFileUpload 이용 예시 황제낙엽 2023.08.25 2
» ServletFileUpload.parseRequest() 실행 결과 리스트가 비어있는 오류 황제낙엽 2023.08.25 15
343 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다. file 황제낙엽 2023.08.23 82
342 (Bard) the request was rejected because no multipart boundary was found file 황제낙엽 2023.08.23 6
341 (Bard) multipart/form-data 요청 처리를 위한 MultipartHttpServletRequest file 황제낙엽 2023.08.21 4
340 [JsonNode] depth 가 여러 단계인 json data 내부를 조회하는 java code 예제 (from Bard) file 황제낙엽 2023.08.09 20
339 JPA 개요 황제낙엽 2023.07.25 3
338 javax.mail 샘플 몇가지 (테스트 수행전) 황제낙엽 2023.06.26 2
337 java 프로그램으로 회원가입용 인증 메일을 보내는 방법 (from naver / 테스트 성공) file 황제낙엽 2023.06.24 219
336 java 프로그램으로 회원가입용 인증 메일을 보내는 방법 (from bing / 테스트 실패) [1] 황제낙엽 2023.06.23 3
335 base64 encode, decode 황제낙엽 2023.06.12 8
334 BASE64Encoder, BASE64Decoder 의 deprecated 황제낙엽 2023.06.12 1
333 문자의 ASCII 값 테이블 - String.charAt() file 황제낙엽 2023.03.28 0
332 java로 알파벳 대소문자를 랜덤으로 조합하는 코드 만들어줘 (ChatGPT) 황제낙엽 2023.03.28 1