A transferência de arquivos não é suportada diretamente no Feign encapsulada pela Spring Cloud, mas pode ser implementada pela introdução de pacotes de extensão Feign, por isso falaremos sobre como implementá -lo em detalhes.
Provedor de serviços (Receba Arquivos)
A implementação do provedor de serviços é relativamente simples, basta seguir o método normal de implementação do MVC da primavera, como:
@RestControllerPublic Classe uPLOPCTROLLER {@PostMapping (value = "/uploadFile", consumes = MediaType.multipart_form_data_value) public string handleFileUpload (@RequestPart (value = "file") multipartfile file) {Return.getName (); }}Serviço Consumidor (Enviar arquivo)
Como o consumidor do serviço usará o Feign Client, é necessário introduzir a dependência da Feign no envio do formulário aqui, como segue:
<Depencency> <PuerpId> io.github.openfeign.form </proupid> <stifactId> Feign-form </ArtifactId> <versão> 3.0.3 </versão </dependency> <pendency> <vroupId> io.github.openfeig.form <//Groupid> <TrAtifactId> Feign> Feign> Feign> <Versão> 3.0.3 </versão> </dependency> <pendence> <puperid> Commons-FileUpload </GroupId> <TarifactId> Commons-FileUpload </ArtifactId> </Dependency>
Defina FeignClient, assumindo que o nome de serviço do provedor de serviços é servidor de upload
@FeignClient (value = "upload-server", configuration = testServiceclient.multipartsupportConfig.class) interface pública uploadservice {@PostMapping (valueTaTaTa_valueFile ", consumers = mediaType.multipart_form_estart) stringFile" arquivo); @Configuration Class MultipartSupportConfig {@Bean Public Encoder FeignFormEncoder () {return new SpringForMencoder (); }}}Depois de iniciar o provedor de serviços, tente escrever casos de teste no consumidor de serviço para passar o arquivo através do cliente Feign definido acima, como:
@Teste@sneakythrowspublic void testHandlefileUpload () {arquivo file = new File ("files/aaa.txt"); DiskFileItem fileItem = (DiskFileItem) new DiskFileItemFactory (). CreateItem ("File", MediaType.text_plain_value, true, file.getName ()); tente (inputStream input = new FileInputStream (file); outputStream OS = FILEITEM.getOutputStream ()) {ioutils.copy (input, OS); } catch (Exceção e) {lança nova ilegalArgumentException ("arquivo inválido:" + e, e); } Multipartfile multi = new CommonsmultipartFile (fileItem); Log.info (testServiceClient.HandleFileUpload (Multi));}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.