Контроллер:
Код: Выделить всё
@RequestMapping("/api/biometric")
@RequiredArgsConstructor
public class BiometricController {
private final BiometricClient biometricClient;
@PostMapping("/register")
public ResponseEntity registerUser(
@RequestParam("user_id") String userId,
@RequestParam("image") MultipartFile image) throws IOException {
String response = biometricClient.register(userId, image);
return ResponseEntity.ok(response);
}
}
Код: Выделить всё
package com.fijalkoa.biosso.biometric;
import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
import org.springframework.http.client.MultipartBodyBuilder;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.WebClientResponseException;
import java.io.IOException;
@Component
public class BiometricClient {
private final WebClient webClient;
public BiometricClient() {
this.webClient = WebClient.builder()
.baseUrl("http://localhost:5001")
.build();
}
public String register(String userId, MultipartFile image) {
try {
Resource file = new org.springframework.core.io.ByteArrayResource(image.getBytes()) {
@Override
public String getFilename() {
return image.getOriginalFilename();
}
};
MultipartBodyBuilder builder = new MultipartBodyBuilder();
builder.part("user_id", userId); // string part
builder.part("image", file);
MultiValueMap
Подробнее здесь: [url]https://stackoverflow.com/questions/79817245/webclient-sending-an-empty-multipart-request-to-flask-service[/url]
Мобильная версия