1。構成ファイルパーサー
サービスプロバイダーと消費者の両方が構成ファイルパーサーが必要です。ここでは、Commons-Fileuploadを使用して元のパーサーを置き換えます。
頼る:
<Dependency> <groupId> commons-fileupload </groupid> <artifactid> commons-fileupload </artifactid> <バージョン> 1.3.1 </version> </dependency>
注入豆:
@bean(name = "multipartresolver")public multipartresolver mutipartresolver(){commonsmultipartresolver com = new commonsmultipartresolver(); com.setDefaultEncoding( "utf-8"); com;}プログラムエントリから元のパーサーを除外します。
@springBootApplication(exclude = {multipartautoconfiguration.class}) 2。サービスプロバイダー、つまり、ファイルを受け取る当事者の構成
コントローラーの書き込み:
@ResponseBody@requestMapping(value = "/upload"、method = {requestmethod.post}、produces = {mediatype.application_json_utf8_value}、mediatype.multipart_form_data_value)public result <string> uploadfile id){string filename = file.getoriginalFileName();文字列extend = fileOpereTil.suffix(filename); fileopereTutil.copy( "e://" + filename、file); runter resultbuilder.success( "ok");}@RequestPartファイルを指定し、次の@RequestParamは追加のパラメーターです。追加のパラメーターはURL長い制限を超えないことに注意してください。
3。消費者の構成サービス
頼る:
<Dependency> groupId> io.github.openfeign.form </groupid> <artifactid> feign-form-spring </artifactid> <バージョン> 3.2.2 </version> </dependency> <seplency> <shipency> io.github.openfeign.form </group> <artifactid> feign-form-form-form-form <バージョン> 3.2.2 </version> </dependency>
ファイルエンコード構成:
import feign.codec.encoder; import feign.form.spring.springformencoder; Import org.springframework.beans.factory.objectactory; Import org.springframework.factory.Annotation.Autowired; Import org.springframework.boot.autoconfigure.web.httpptpptpptppmebente org.springframework.cloud.netflix.feign.support.springencoder; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; objectFactory <httpmessageconverters> MessageConverters; @bean public encoder feignformencoder(){return new SpringFormenCoder(new SpringEncoder(MessageConverters)); }}フェインインターフェイス定義:
@feignclient(name = "test-upload")public interface uploadservice { @responsebody @requestmapping(value = "/upload"、method = {requestmethod.post}、生産= {mediatype.application_json_utf8_value}、消費者= mediatepe.multiptart_balue_balue_balue結果<String> uploadFile(@RequestPart( "File")MultiPartFileファイル、@requestParam( "id")long id);}これは、通常の偽装インターフェイスの執筆方法に似ており、サービスプロバイダーのcontrollerと同じメソッド注釈とパラメーターに注意を払ってください。
Controllerが書かれています。 Controllerフロントエンドから送信されたファイル情報と追加のパラメーターを受信し、Feignインターフェイスを介してリモートエンドに送信します。
// feign interface @autowiredprivate uploadservice uploadservice;@requestmapping(value = "/upload"、method = requestmethod.post、生産= "application/json; charset = utf-8")@responsbypublic result <string> testupload(httpsrequestrequest request、long id) MultiParthTTPSERVLETREQUEST MREQUEST =(MultiParthTTPSERVLETREQUEST)リクエスト; map <string、multipartfile> filemap = mrequest.getFileMap(); for(multipartfile mfile:filemap.values()){string filename = mfile.getoriginalfilename(); result = uploadservice.uploadfile(mfile、id); } return result;} 4。概要
最後に、プロセスを整理しましょう。サービスコンシューマーは、フロントエンド(ブラウザなど)から送信されたファイルを受信しますが、ビジネス処理を実行しません。次に、Feign Call Interfaceを介して、ファイルがサービスプロバイダーに渡されます。サービスプロバイダーがファイルを受信した後、対応するビジネス処理を実行します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。