Oi Fabio, boa tarde! Tudo joia?
Esse problema pode ser causado por algumas configurações ou detalhes que estão faltando. Vou tentar ajudar com algumas sugestões.
Primeiro, certifique-se de que você tem as dependências necessárias no seu pom.xml
para trabalhar com Feign e MultipartFile. Aqui está um exemplo:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Além disso, você pode precisar adicionar uma configuração Feign específica para suportar MultipartFile
. Aqui está um exemplo de como fazer isso:
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignConfig {
@Bean
public Encoder feignFormEncoder() {
return new SpringFormEncoder();
}
}
Depois, certifique-se de que seu FeignClient esteja configurado para usar essa configuração:
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
@FeignClient(name = "apiBClient", url = "http://localhost:8081", configuration = FeignConfig.class)
public interface ApiBClient {
@PostMapping(value = "/file/upload2", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
String upload(@RequestPart("file") MultipartFile file);
}
No seu controlador da API A, você pode usar o FeignClient da seguinte forma:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
@RestController
public class FileUploadController {
@Autowired
private ApiBClient apiBClient;
@PostMapping("/upload")
public void uploadJustificativa(@RequestParam("file") MultipartFile file) throws IOException {
String response = apiBClient.upload(file);
System.out.println(response);
}
}
Certifique-se também de que o endpoint da API B está corretamente configurado para receber o arquivo:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FileUploadControllerB {
@PostMapping(value = "/file/upload2", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String uploadFile2(@RequestParam("file") MultipartFile file) throws Exception {
// Lógica para processar o arquivo
return "File uploaded successfully";
}
}
Espero que isso ajude a resolver o seu problema!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.