1. Analisador de arquivo de configuração
Os provedores de serviços e os consumidores precisam de analisadores de arquivos de configuração, e aqui usamos o Commons-FileUpload para substituir o analisador original:
confiar:
<Depencency> <voundid> Commons-FileUpload </proupId> <TRARFACTID> Commons-FileUpload </stifactId> <versão> 1.3.1 </versão </dependency>
Injete Bean:
@Bean (name = "multipartresolver") public multipartresolver mutipartResolver () {CommonsmultipartResolver com = new commonsmultipartResolver (); com.setDefaultEncoding ("UTF-8"); retornar com;}Exclua o analisador original da entrada do programa:
@Springbootapplication (exclude = {multipartoconfiguration.class}) 2. Provedor de serviços, ou seja, a configuração da parte recebendo o arquivo
Escrita do controlador:
@ResponseBody@requestmapping (value = "/upload", método = {requestmethod.post}, produz = {mediatype.application_json_utf8_value}, consumers = mediatype.multipart_form_data_value) resultado public <tring> uplarfile (@requesttar id) {string filename = FILE.GETORGINALFILENAME (); String estend = FILEOPERATILIL.SUFFIX (nome do arquivo); FILEOPERATEUTIL.COPY ("E: //" + nome do arquivo, arquivo); Retornar resultingbuilder.success ("ok");}@RequestPart Especifica o arquivo, o seguinte @RequestParam é um parâmetro extra. Observe que o parâmetro extra não pode exceder o limite de comprimento do URL.
3. Configuração do consumidor de serviço
confiar:
<Depencency> <PuerpId> io.github.openfeign.form </proupid> <ArtifactId> Feign-form-spring </ArtifactId> <Versão> 3.2.2 </versão </dependency> <pendency> <purfactId> io.github.openfeign.form </proupid> <artIfactId> FEIGN-Form> FEIGN-FORM) <Versão> 3.2.2 </sisters> </dependency>
Configuração de codificação de arquivo:
importar feign.codec.encoder; importar feign.form.spring.springformEncoder; importar org.springframework.beanS.Factory.ObjectFactory; import org.springframework.bean.factory.annotation.autowired. org.springframework.cloud.netflix.feign.support.springEncoder; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; @configurationPublic ClassTartsUsuptor ObjectFactory <tttpMessageConverters> messageconverters; @Bean Public Encoder FeignFormEncoder () {return New SpringForMencoder (novo SpringEncoder (Messageconverters)); }}Definição de interface Feign:
@FeignClient (name = "" test-upload ") interface pública uploadservice {@ResponseBody @RequestMapping (value ="/upload ", método = {requestmethod.post}, produz = {mediatype.application_json_utf8_value}, consumidores = mediape Resultado <string> uploadfile (@RequestPart ("arquivo") arquivo multipart -file,@requestParam ("id") longo id);} É semelhante ao método de escrita da interface Feign comum, preste atenção à mesma anotação e parâmetros do método que controller do provedor de serviços.
Controller está escrito. Controller recebe informações do arquivo e parâmetros extras transmitidos do front -end e depois o transmite para a extremidade remota através da interface Feign:
// Injetar interface Feign @AUTOWIREDPRIVATE uploadService uploadService; @ReQuestMapp (value = "/upload", método = requestMethod.post, produz = "Application/json; charset = ustlestlestlestlestlestlestlestlestrocest, resultado, resultado de resultado <) MultiparthttpServletRequest mRequest = (multiparthttpServletRequest) solicitação; Mapa <string, multipartfile> filemap = mrequest.getFilemap (); para (MultipartFile Mfile: filemap.values ()) {string filename = mfile.getoriginalfilename (); resultado = uploadservice.uploadfile (mfile, id); } resultado de retorno;} 4. Resumo
Por fim, vamos resolver o processo. O consumidor de serviço recebe arquivos transmitidos do front-end (como navegadores), mas não executa o processamento de negócios. Em seguida, através da interface de chamada Feign, o arquivo é passado para o provedor de serviços. Depois que o provedor de serviços recebe o arquivo, ele executa o processamento de negócios correspondente.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.