관리 메뉴

피터의 개발이야기

[Spring] 파일업로드 시 Invalid boundary error 처리 본문

Programming/Spring

[Spring] 파일업로드 시 Invalid boundary error 처리

기록하는 백앤드개발자 2022. 8. 25. 16:34
반응형

 

ㅁ 개요

  Webflux로 파일객체를 받아 동기화 하는 로직을 테스트 중 이었다.

 Postman으로 테스트 과정에서 Invalid boundary in the content type multipart/form-data 다음과 같은 에러가 발생하여 해결하는 과정을 정리하였다.

 

 

ㅁ 발송 Postman Head와 Body

 

 

curl --location --request POST 'https://127.0.0.1:8080/legacy/v1/npdb/npdb_00001' \
--header 'Content-Type: multipart/form-data;' \
--form 'file=@"/Users/peterseo/test_10000.sql"'

ㅇ 발송할 때에 Content-Type을 multipart/form-data;로 설정하면서 boundary 값이 빠져서 전달하게 된다.

 

 

ㅁ 에러 로그

2022-08-25 14:47:51.482 [ctor-http-nio-2] ERROR [k.c.u.r.r.s.LegacyServiceV1   ] (126 ) : err : Invalid boundary in the content type multipart/form-data
2022-08-25 14:47:51.483 [ctor-http-nio-2] ERROR [flatMap                       ] (314 ) : | onError(java.lang.IllegalStateException: Invalid boundary in the content type multipart/form-data)
2022-08-25 14:47:51.484 [ctor-http-nio-2] ERROR [flatMap                       ] (319 ) : 

java.lang.IllegalStateException: Invalid boundary in the content type multipart/form-data
	at org.synchronoss.cloud.nio.multipart.NioMultipartParser.getDelimiterPrefix(NioMultipartParser.java:665)
	at org.synchronoss.cloud.nio.multipart.NioMultipartParser.<init>(NioMultipartParser.java:313)
	at org.synchronoss.cloud.nio.multipart.Multipart$Builder.forNIO(Multipart.java:150)
	at org.springframework.http.codec.multipart.SynchronossPartHttpMessageReader$SynchronossPartGenerator.accept(SynchronossPartHttpMessageReader.java:149)

 

 

ㅁ 해결방법

 ㅇ Content-Type의 값을 "multipart/form-data; boundary=<calculated when request is sent>" 으로 바꾸었다.

 ㅇ 파일의 업로드가 정상적으로 작동하였다.

 

2022-08-25 16:38:23.114 [ctor-http-nio-2]  INFO [k.c.u.r.r.f.TraceWebFilter    ] (108 ) : request start. LK=[AQkFQIV2uJlxCmR], id=, ip=127.0.0.1, url=/legacy/v1/npdb/npdb_00001, method=POST, params=multipart/form-data; boundary=--------------------------431458392818778715795111
2022-08-25 16:38:23.138 [ctor-http-nio-2]  INFO [k.c.u.r.r.f.TraceWebFilter    ] (157 ) : response body. LK=[AQkFQIV2uJlxCmR], id=, ip=127.0.0.1, url=/legacy/v1/npdb/npdb_00001, method=POST, status=200 OK, rslt={"rslt":"1000","rslt_desc":"성공"}

 ㅇ multipart/form-data; 이후에 boundary 값을 확인 할 수 있다.

 

ㅁ HTTP 통신 규격

  1. Content-Type에 multipart/form-data로 지정 되어야 서버에서 정상적으로 데이터를 처리한다.
  2. 전송되는 파일 데이터의 구분자은 boundary에 지정되어 있는 문자열로 구분한다.

 

ㅁ 결론

  ㅇ 에러의 원인은 HTTP 통신 규격에 위배되면서 파일객체를 구분할 수 없는 boundary가 빠지면서 발생한 오류이며, Postman 테스트 

 Content-Type에 multipart/form-data; boundary=<calculated when request is sent>을 입력해야한다.

 

반응형
Comments