1. Pandillero de archivo de configuración
Tanto los proveedores de servicios como los consumidores necesitan analizadores de archivos de configuración, y aquí usamos Commons-FileUppload para reemplazar el analizador original:
confiar:
<Spendency> <MoupRoMID> Commons-FileUpload </groupId> <artifactId> commons-fileUpload </artifactid> <versión> 1.3.1 </versión> </pendency>
Inyección de frijol:
@Bean (name = "multipartResolver") público multipartResolver MutipARTRESOLVER () {commonsMultipARTresolver com = new CommonsMultIParTresolver (); com.setDefaultEncoding ("UTF-8"); return com;}Excluya el analizador original de la entrada del programa:
@SpringBootApplication (excluir = {multipartautoconfiguration.class}) 2. Proveedor de servicios, es decir, la configuración de la parte que recibe el archivo
Escritura del controlador:
@ResponseBody@requestMapping (value = "/upload", método = {requestmethod.post}, produce = {mediAtype.application_json_utf8_value}, consumers = mediatype.multipart_form_data_value) público resultado <cadena>@@@RequestPart ("archivo múltiple" archivo,@@@@@"Id" Id ") Id") Id. Cadena filename = file.getOriginalFileName (); String extend = fileOperereUtil.suffix (nombre de archivo); FileoperateUtil.copy ("e: //" + nombre de archivo, archivo); return resultBuilder.success ("OK");}@RequestPart Especifica el archivo, el siguiente @RequestParam es un parámetro adicional. Tenga en cuenta que el parámetro adicional no puede exceder el límite de longitud de la URL.
3. Configuración del consumidor de servicios
confiar:
<Spendency> <MoupRoMID> io.github.openfeign.Form </groupId> <ArFactId> Feign-formy-spring </artifactId> <PROPESPONSE> 3.2.2 </Version> </Dependency> <Spendency> <ProupId> io.github.openfeign.form </proupId> <AtifactID> fesign-Form </artifactid> <Versión> 3.2.2 </versión> </pendency>
Configuración de codificación de archivos:
import feign.codec.encoder; import feign.form.spring.springformencoder; import org.springframework.beans.factory.objectFactory; import org.springframework.beans.factory.annotation.aUtowired; import.springframework.boot.autoconfigure.web.htpessmess; org.springframework.cloud.netflix.feign.support.springencoder; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; @configurationPublic de clase multiplicada multiplicación multiplicada ObjectFactory <httpMessageConverters> MessageConverters; @Bean Public Coder FeignFormEncoder () {return New SpringFormEncoder (nuevo SpringEncoder (MessageConverters)); }}Definición de interfaz fingir:
@FeignClient (name = "test-supload") Interfaz pública ifoadService {@ResponseBody @RequestMapping (valor = "/upload", método = {requestMethod.post}, produce = {mediatype.application_json_utf8_value}, consumidores = mediatype.multipart_data_value) Result <String> uploadFile (@RequestPart ("File") File multipartfile,@requestparam ("id") ID de largo);} Es similar al método de escritura de la interfaz fingente ordinaria, preste atención a la misma anotación y parámetros del método que controller del proveedor de servicios.
Controller está escrito. Controller recibe información de archivo y parámetros adicionales transmitidos desde el extremo frontal, y luego la transmite al extremo remoto a través de la interfaz Feign:
// Inyect Feign Interface @autewiredPrivate uploadService uploadService; @RequestMapping (value = "/upload", método = requestmethod.post, produce = "aplicación/json; charset = utf-8")@ResponseBodyPublic Surpublic <String> testUpload (httpservletRequest Solicitud, largo ID) {Result <String> Result. MultiparthttpservletRequest mrequest = (multipThttpServletRequest) solicitud; Map <string, multipartFile> fileMap = mrequest.getFilEmap (); for (multipartFile mfile: fileMap.Values ()) {string filename = mfile.getOriginalFileName (); resultado = uploadService.uploadFile (mfile, id); } resultado de retorno;} 4. Resumen
Finalmente, solucionemos el proceso. El consumidor de servicio recibe archivos transmitidos desde el front-end (como los navegadores), pero no realiza el procesamiento comercial. Luego, a través de la interfaz Feign Call, el archivo se pasa al proveedor de servicios. Después de que el proveedor de servicios recibe el archivo, realiza el procesamiento comercial correspondiente.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.