La transferencia de archivos no se admite directamente en Feign encapsulado por Spring Cloud, pero se puede implementar mediante la introducción de paquetes de extensión Feign, por lo que hablaremos sobre cómo implementarlo en detalle.
Proveedor de servicios (recibir archivos)
La implementación del proveedor de servicios es relativamente simple, solo siga el método de implementación normal de Spring MVC, como:
@RestControllerPublic Class uploadController {@PostMapping (value = "/uploadFile", consumes = mediAtype.multipart_form_data_value) cadena pública handleFileUpload (@RequestPart (value = "file") File multipartfile) {return.getName (); }}Consumidor de servicio (enviar archivo)
Dado que el consumidor del servicio utilizará el cliente Feign, es necesario introducir la dependencia de Feign en la presentación del formulario aquí, de la siguiente manera:
<Spendency> <MoupRoD> io.github.openfeign.form </groupid> <artifactId> Feign-forma </artifactId> <versión> 3.0.3 </versión> </pendency> <sependency> <MoupRoMid> io.github.openfeign.form </groupId> <AtifactId> feign-formatring </artifactid> <versión> 3.0.3 </versión> </pendency> <pendency> <grupid> commons-fileUpload </groupid> <artifactid> commons-fileUpload </artifactid> </dependence>
Definir FeignClient, suponiendo que el nombre del servicio del proveedor del servicio sea la servidumbre de carga
@FeignClient (value = "upload-server", configuración = testServiceClient.multipartSupportConfig.class) Interface public ifoadService {@PostMapping (value = "/uploadFile", consumidores = mediatype.multipart_form_data_value) string handleFilePlOAD ( @ @@RequestPart (value "file"). @Configuration Class MultipartSupportConfig {@Bean Public Encoder FeignFormEncoder () {return new SpringFormEncoder (); }}}Después de comenzar el proveedor de servicios, intente escribir casos de prueba en el consumidor del servicio para que pase el archivo a través del cliente fingido definido anteriormente, como:
@Test@sneakythrowspublic void testHandleFileUpload () {archivo archivo = nuevo archivo ("files/aaa.txt"); DiskFileItem fileItem = (diskFileItem) New DiskFileItemFactory (). CreateItem ("File", Mediatype.Text_Plain_Value, true, file.getName ()); try (inputStream input = new FileInputStream (File); OutputStream OS = fileitem.getOutputStream ()) {ioutils.copy (input, OS); } catch (Exception e) {Throw New IlegalArgumentException ("Archivo no válido:" + E, E); } MultipartFile multi = new CommonSMultIPartFile (fileItem); log.info (testServiceClient.handlefileUpload (multi));}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.