Передача файлов не поддерживается напрямую в Failign, инкапсулированном Spring Cloud, но он может быть реализован путем введения пакетов расширения Feign, поэтому мы поговорим о том, как его реализовать подробно.
Поставщик услуг (получение файлов)
Реализация поставщика услуг относительно проста, просто следуйте нормальному методу реализации Spring MVC, например:
@Restcontrollerpublic class uploadcontroller {@postmapping (value = "/uploadfile", contriple = mediaType.multipart_form_data_value) public строка }}Потребитель услуг (отправить файл)
Поскольку потребитель услуг будет использовать клиент Feign, необходимо ввести зависимость Фейна от представления формы здесь следующим образом:
<dependency> <groupid> io.github.openfeign.form </GroupId> <ArtifactId> fail-form </artifactid> <sersive> 3.0.3 </version> </dependency> <dehydency> <groupid> io.github.openfeign.form </GroupId> <ratifactId> feign-form-spring </artifactid> </GroupId> <ratifactId> feign-form-spring </artifactid.form. <serse> 3.0.3 </version> </dependency> <Dependency> <groupId> commons-fileUpload </GroupId> <artifactid> commons-fileupload </artifactid> </vehing>
Определите FeignClient, предполагая, что имя услуги поставщика услуг является загруженным сервером
@Feignclient (value = "upload-server", configuration = testserviceclient.multipartsupportconfig.class) public oploadservice {@postmapping (value = "/uploadfile", uncingers = mediaType.multipart_form_data_value) string handlealed (@Requequequart (@Reequequest (@Requequequart (@Requequequart (@RequequestPart (@Requequequart (@RequequestPart) файл); @Configuration class multiplestsupportconfig {@bean public encoder feignformencoder () {return new Springformencoder (); }}}После запуска поставщика услуг, попробуйте написать тестовые примеры на потребителя услуг, чтобы передать файл через клиент Feign, определенный выше, например:
@Test@sneakythrowspublic void testhandlefileupload () {file file = new File ("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) {бросить new allogalargumentException ("неверный файл:" + e, e); } MultipArtFile multi = new CommonsMultiPartFile (fileItem); log.info (testserviceclient.handlefileupload (multi));}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.