1. Konfigurationsdatei -Parser
Sowohl Dienstanbieter als auch Verbraucher benötigen Konfigurationsdatei-Parsers. Hier verwenden wir Commons-FileUpload, um den ursprünglichen Parser zu ersetzen:
verlassen:
<De vorhöhe> <gruppe> commons-fileUpload </Groupid> <artifactId> commons-fileUpload </artifactId> <version> 1.3.1 </Version> </abhängig>
Bean injizieren:
@Bean (name = "multipartresolver") public multipartresolver mutipartresolver () {commonsMultipartresolver com = new commonsMultipArtresolver (); com.setDefaultCoding ("utf-8"); Com;} zurückgebenSchließen Sie den ursprünglichen Parser aus dem Programmeintrag aus:
@SpringbootApplication (exklued = {MultipartAutoconfiguration.class}) 2. Dienstanbieter, dh die Konfiguration der Partei, die die Datei empfängt
Controller schreiben:
@ResponseBody@RequestMapping(value = "/upload", method = {RequestMethod.POST}, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumers = MediaType.MULTIPART_FORM_DATA_VALUE)public Result<String> uploadFile(@RequestPart("file")MultipartFile Datei,@RequestParam ("id") Long id) {String Dateiname = Datei.getOriginalFileName (); String extend = FileoperateUtil.suffix (Dateiname); DateioperateUtil.copy ("e: //" + Dateiname, Datei); return resultbuilder.success ("ok");}@RequestPart gibt die Datei an, die folgende @RequestParam ist ein zusätzlicher Parameter. Beachten Sie, dass der zusätzliche Parameter die URL -Längengrenze nicht überschreiten darf.
3.. Serviceverbraucherkonfiguration
verlassen:
<Depopentcy> <gruppe> io.github.openfesign.form </GroupId> <artifactId> Feign-Form-Spring </artifactid> <version> 3.2.2 </Version> </abhängig> <depeopcy> <GroupId> io.github.openfe.form </Groupid> <artifactid> feign-Form </artifactid> <version> 3.2.2 </version> </abhängig>
Dateicodierungskonfiguration:
Import Feign.Codec.encoder; Import feign.form.spring.springformeCoder; import org.springframework.beans.factory.ObjectFactory; org.springframework.boot.autoconfigure.web.httpMessageConverters; import org.springframework.cloud.netflix.fesign.support.springence; org.springframework.context.annotation.configuration; @ConfigurationPublic class MultiPartSupportConfig {@autowired Private ObjectFactory <HttpMessageConverters> MessageConverters; @Bean public Encoder FeigNFormcoder () {neuer SpringFirmalEncoder zurückgeben (neuer Springcoder (MessageConverters)); }}Definition der Schnittstelle vorstellen:
@FEIGNCLIENT (name = "test-upload") public interface uploadService {@responsebody @RequestMapping (value = "/upload", method = {requestMethod.post}, produziert = {initialtype.application_json_utf8_value}, Consumers = mediaType. Ergebnis <string> UploadFile (@RequestPart ("Datei") MultiPartFile -Datei,@RequestParam ("ID") Long ID);}; Es ähnelt der Schreibmethode der gewöhnlichen Täuschungschnittstelle, achten Sie auf dieselbe Methodenanmerkungen und Parameter wie controller des Dienstanbieters.
Controller ist geschrieben. Controller empfängt Dateiinformationen und zusätzliche Parameter, die vom vorderen Ende übertragen werden, und überträgt sie dann über die vorstellbare Schnittstelle an das Remote -Ende:
// Inject feign interface @Autowiredprivate UploadService uploadService;@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = "application/json; charset=utf-8")@ResponseBodypublic Result<String> testUpload(HttpServletRequest request, Long id){ Result<String> result = null; MultiparthttpServletRequest mrequest = (multiparthttpServletRequest) Anfrage; Karte <String, MultipartFile> fileMap = mrequest.getFilemap (); für (MultipartFile mFile: fileMap.Values ()) {String fileName = mFile.getoriginalFileName (); result = uploadService.UploadFile (MFILE, ID); } Rückgabeergebnis;} 4. Zusammenfassung
Lassen Sie uns schließlich den Prozess aussortieren. Der Serviceverbraucher erhält Dateien, die vom Front-End (z. B. Browsser) übertragen werden, führt jedoch keine Geschäftsabwicklung durch. Anschließend wird die Datei über die vorgefertigte Anrufschnittstelle an den Dienstanbieter weitergegeben. Nachdem der Dienstanbieter die Datei erhalten hat, führt er entsprechende Geschäftsabwicklung durch.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.