[SPRING] Spring Reactive Web MVC가 Multipart-file을 처리하는 방법?
SPRINGSpring Reactive Web MVC가 Multipart-file을 처리하는 방법?
스프링 부트 2.0 응용 프로그램에서 새로운 반응 웹 -mvc 구현을 사용하려고합니다. multipart 파일을 사용하는 방법을 정의하려고 노력하고 있지만 성공하지 못합니다. (- 저는 항상 415 오류가납니다.
한 손에는 다음과 같은 요청 매핑을 포함하는 컨트롤러가 있습니다.
@RequestMapping(method = RequestMethod.POST, path = "/myPath/{param}/{param2}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseBody
public Mono<Void> postFile(
@RequestBody MultipartFile data,
@PathVariable("param") String param,
@PathVariable("param2") String param2,
@RequestHeader(name = HEADER_DATE, required = false) @DateTimeFormat(pattern = DATE_FORMAT) Instant instant
){
return fileService.handleData(Mono.just(data), param, param2, instant);
}
반면에 netty가 multipart 파일을 처리하지 않는 것처럼 기본 종속성의 맨 위에 서버를 추가해야했습니다. 필자는 spring-boot-starter-tomcatdependency를 추가하여 MultipartAutoConfiguration을 응용 프로그램 자동 구성과 일치시키고 만족시킬 수있게했습니다.
컬 (curl) 콜을 사용하여 무언가를 올릴 때 : curl 'Meta-Date : 20170101104532'--form "file=@file.bin"http : // localhost : 8082 / myPath / foo / bar 디버그 로그가 활성화되는 동안 (logging.level.org.springframework.web = DEBUG)이 예외가 발생했습니다 : org.springframework.web.server.UnsupportedMediaTypeStatusException : 요청 실패 [상태 : 415, 이유 : "콘텐츠 유형 'multipart / 양식 데이터, 경계 = ------------------- ----- 58fa43b8f1a26de4 '지원되지 않음']
이 오류는 [* / *, text / xml, application / * + json, charset = UTF-8, application / xml, text / plain, charset = UTF-8] 미디어 유형을 지원하는 RequestBodyArgumentResolver에 의해 발생합니다. , application / x-www-form-urlencoded, application / json, charset = UTF-8]에 의해 제공됩니다.
게시하기 전에 나는 또한 다음을 살펴 보았다.
Spring 4에서는 Spring 4 스프링 부트 응용 프로그램에서 이러한 클래스를 찾지 못했고, 아직 여러 DecartHttpMessageReader가 다중 파트 파일을 다루지 않았기 때문에 Spring Web 5.0은 새로운 요청 디코더 시스템을 사용합니다. 내가 뭘 놓 쳤니 ? 아니면 구현을 기다려야합니까?
해결법
-
==============================
1.이제이 기능에 대한 풀 요청이 현재 존재하기 때문에 지금은 구현되지 않은 것 같습니다. 반응 멀티 파트 요청 지원 # 1201 추가
이제이 기능에 대한 풀 요청이 현재 존재하기 때문에 지금은 구현되지 않은 것 같습니다. 반응 멀티 파트 요청 지원 # 1201 추가
이걸 좀 더 일찍 확인해야 할거야 ...
[편집] : 문제가 해결되었고 Spring master branch로 병합되었습니다. 더 이상 문제가되지 않아야합니다.
-
==============================
2.
@PutMapping(value="/{..}",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Mono<Void> save(@RequestPart("file") FilePart multipartFormData,@RequestParam("fileName") String fileName,@PathVariable("..") String ..) throws IOException { List<ByteBuffer> bytesList = new LinkedList<>(); multipartFormData.content(). subscribe(item->bytesList.add(item.asByteBuffer())); int totalBytes = bytesList.stream().mapToInt(item->item.capacity()).sum(); ByteBuffer buffer = ByteBuffer.allocate(totalBytes); bytesList.stream().forEach(byteBuff->buffer.put(byteBuff)); baseImageHandler.saveImage(buffer, fileName, baseItemId); return Mono.empty(); }
그것은 dev 버전이지만이 방법으로 관리 할 수 있습니다.
from https://stackoverflow.com/questions/43066619/how-to-enable-spring-reactive-web-mvc-to-handle-multipart-file by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 트랜잭션 전파 필수, REQUIRES_NEW (0) | 2019.04.30 |
---|---|
[SPRING] 스프링 부트 매핑 검증 코드와 MessageSource 메시지 비교 (0) | 2019.04.30 |
[SPRING] Spring Security를 사용하는 나의 어플리케이션은 로그인 페이지를 넘어 가지 않습니다. (0) | 2019.04.30 |
[SPRING] 서버 응답에 파일 객체를 쓰고 서버에 파일을 저장하지 않고 어떻게 작성합니까? (0) | 2019.04.30 |
[SPRING] 최대 절전 모드 엔티티 저장시 일시적인 패턴 무시 (0) | 2019.04.30 |