1. 구성 파일 파서
서비스 제공 업체와 소비자 모두 구성 파일 파서가 필요하며 여기에서는 Commons-FileUpload를 사용하여 원래 구문 분석기를 대체합니다.
의존하다:
<pectionency> <groupId> Commons-FileUpload </groupid> <artifactid> Commons-FileUpload </artifactid> <버전> 1.3.1 </version> </fectionency>
주사 콩 :
@Bean (name = "multipartresolver") public multipartresolver mutipartresolver () {commonsmultipartresolver com = new Commonsmultipartresolver (); com.setDefaultEncoding ( "UTF-8"); 반환 com;}프로그램 항목에서 원래 파서를 제외하십시오.
@SpringBootApplication (제외 = {multipartAutoConfiguration.class}) 2. 서비스 제공 업체, 즉 파일을 수신하는 당사자의 구성
컨트롤러 쓰기 :
@responsebody@reponsemapping (value = "/upload", method = {requestmethod.post}, croferes = {mediaType.Application_json_utf8_value}, 소비자 = mediaType.multipart_form_data_data_data_data_data_data_value) public ruits <string> uploadFile ( "파일")) id) {String filename = file.getoriginalFilename (); String Extend = FileOperateUtil.Suffix (Filename); FileOperateUtil.copy ( "e : //" + filename, file); return resultBuilder.success ( "OK");}@requestpart 파일을 지정하고 다음 @requestparam은 추가 매개 변수입니다. 추가 매개 변수는 URL 길이 제한을 초과 할 수 없습니다.
3. 서비스 소비자 구성
의존하다:
<pectionency> <groupid> io.github.openfeign.form </groupid> <artifactid> feign-form-spring </artifactid> <version> 3.2.2 </version> <pectionement> <groupId> io.github.openfeign.form </groupid> feign-form </artifactid> <버전> 3.2.2 </버전> </의존성>
파일 인코딩 구성 :
import feign.codec.encoder; import feign.form.spring.springformencoder; import org.springframework.bean.bean.bean.objectfactory; import org.springframework.beans.ack.annotation.autowired; import org.springframework.autoconfiger.htpmesconverureation org.springframework.cloud.netflix.feign.support.springencoder; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; @configurationpublic class multiptartsupportconfig <@autowired private objectory <hafired private objector MessageConverters; @bean public encoder feignformencoder () {return new springformencoder (new springencoder (messageconverters)); }}Feign 인터페이스 정의 :
@FeignClient (name = "test-upload") public interface uploadservice {@responsebody @requestmapping (value = "/upload", method = {requestmethod.post}, produces = {mediaType.application_json_utf8_value}, 소비자 = mediaType.multipart_data.Multipart_data.Multipart_data.Multipart_data. 결과 <string> uploadfile (@requestpart ( "file") multipartfile 파일,@requestparam ( "id") long id);} 일반 Feign 인터페이스의 쓰기 방법과 유사하며 서비스 제공 업체의 controller 와 동일한 방법 주석 및 매개 변수에주의를 기울입니다.
Controller 작성되었습니다. Controller 프론트 엔드에서 전송 된 파일 정보 및 추가 매개 변수를 수신 한 다음 Feign 인터페이스를 통해 원격 엔드로 전송합니다.
// feign interface @autowiredPrivate UploadService UploadService; @requestmapping (value = "/upload", method = requestmethod.post, produces = "application/json; charset = utf-8")@responsepublic result <string> testupload (httpservletrequest, long id) {string> result = null; multiparthttpservletrequest mrequest = (multiparthttpservletrequest) 요청; map <string, multipartfile> filemap = mrequest.getfilemap (); for (multipartfile mfile : filemap.values ()) {String filename = mfile.getoriginalFilename (); 결과 = uploadService.uploadfile (mfile, id); } 반환 결과;} 4. 요약
마지막으로 프로세스를 정리해 봅시다. 서비스 소비자는 프론트 엔드 (예 : 브라우저)에서 전송 된 파일을 수신하지만 비즈니스 처리를 수행하지 않습니다. 그런 다음 Feign 통화 인터페이스를 통해 파일이 서비스 제공 업체에 전달됩니다. 서비스 제공 업체가 파일을 수신 한 후에는 해당 비즈니스 처리를 수행합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.