ファイル転送は、Spring Cloudによってカプセル化されたPeignで直接サポートされていませんが、Feign Extensionパッケージを導入することで実装できます。そのため、詳細に実装する方法について説明します。
サービスプロバイダー(ファイルを受信)
サービスプロバイダーの実装は比較的簡単です。次のようなスプリングMVCの通常の実装方法に従ってください。
@RestControllerPublic class uploadController {@PostMapping(value = "/uploadFile"、consumes = mediatype.multipart_form_data_value)public string handlefileupload(@RequestPart(value = "file")multipartfile file){return file.getName(); }}サービスコンシューマー(ファイルの送信)
サービス消費者はFeignクライアントを使用するため、次のように、Formのフォームの提出に対するFeignの依存を導入する必要があります。
<Dependency> <groupId> io.github.openfeign.form </groupid> <artifactid> feign-form </artifactid> <bersion> 3.0.3 </version> </dependency> <redency> <groupid> io.github.openfeign.form </groupid> <artifactid> <バージョン> 3.0.3 </version> </dependency> <dependency> <groupid> commons-fileupload </groupId> <artifactid> commons-fileupload </artifactid> </dependency>
サービスプロバイダーのサービス名がアップロードサーバーであると仮定して、feignclientを定義します
@feignclient(value = "upload-server"、configuration = testserviceclient.multipartsupportconfig.class)public interface upostmapping(value = "/uploadfile"、Consumers = mediatype.multipart_form_data_value) ファイル); @configuration class multipartsupportconfig {@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){新しいIllegalargumentException( "無効なファイル:" + e、e); } multipartfile multi = new commonsmultipartfile(fileitem); log.info(testserviceclient.handlefileupload(multi));}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。