feign 마이크로 서비스 간 파일 업로드 오류 해결
the request was rejected because no multipart boundary was found
spring cloud 버 전 H
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
만약 feign 을 사용한다 면 openfeign 의 의존 도 를 도입 했다 고 믿 습 니 다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
서비스 공급 자 인터페이스:
//
@PostMapping(value = " /file/upload")
public ResultModel<FileInfo> fileUpload(@RequestParam("access_token") String accessToken, @RequestParam("file") MultipartFile file) {
//
FileInfo fileInfo = fileInfoService.uploadFile(file);
return ResultModel.ok(fileInfo);
}
소비자 인터페이스:
@Component
@FeignClient(value = "file-server")
public interface FileInfoFeignService {
@PostMapping(value = "/file/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResultModel<FileInfo> fileUpload(@RequestParam("access_token") String accessToken, @RequestPart("file") MultipartFile file);
}
반드시
consumes = MediaType.MULTIPART_FORM_DATA_VALUE
MultipartFile file 앞의 주 해 는@RequestPart 여야 합 니 다.소비자 컨트롤 러 클래스:
//
@PostMapping(value = "/fileUpload")
public ResultModel<FileInfo> fileUpload(@RequestParam("access_token") String accessToken, @RequestPart("file") MultipartFile file) {
return fileInfoFeignService.fileUpload(accessToken, file);
}
이렇게 하면 완성!자신 이 여러 번 테스트 를 해 보 았 는데,다른 블 로그 들 이 엉망진창 으로 쓴 것 같 았 다.
feign 업로드 파일 구덩이 밟 기 및 해결
feign 을 통 해 파일 서비스 제공 자 인 터 페 이 스 를 호출 할 때 파일 file 을 전송 해 야 합 니 다.서비스 호출 자 는 가끔 오 류 를 보고 할 수 있 습 니 다.
feign.FeignException$BadRequest: status 400 reading
서비스 제공 자 는 Required request part'file'is not present 오 류 를 보고 합 니 다.
이 는 서비스 호출 자 MultipartFile 의 value 가 서비스 제공 자@RequestPart 의 value 값 과 다 르 기 때 문 입 니 다.
서비스 호출 자 MultipartFile 의 value 는 서비스 제공 자의@RequestPart 의 value 값 과 같 아야 합 니 다.안 그러면 400 이상 던 져!!
예시
서비스 호출 자
@PostMapping("/xxx/file")
public xx uploadOrderFilesToOSS(@ApiParam(" ") @RequestParam("file") MultipartFile[] file) {
return xxxService.uploadOrderFilesToOSS(file);
}
Feign
@PostMapping(value = "/file", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
xxx uploadSigleFile(@RequestParam("path") String path, @RequestPart("file") MultipartFile file);
서비스 공급 자
@PostMapping(value = "/file", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public xxx uploadSigleFile(@RequestParam("path") String path, @RequestPart("file") MultipartFile file) {
return fileService.uploadFileToOSS(path, file);
}
다음 코드 를 통 해 요청 파 라미 터 를 볼 수 있 습 니 다
Collection<Part> parts = request.getParts();
logger.info(JSONObject.toJSONString(parts, true));
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
마이크로 서비스 간에feign을 통해 서로 호출되며, 크로스 서버 호출 시 이상이 발생: No route to host해결: feign이 다른 서비스를 호출하는 것도 eureka 등록센터 서비스를 획득하여 서비스가 등록된 IP에 문제가 있는지 추측하고 지정한 appId의 실례를 조회한다. eureka url/eureka/apps/{...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.