Transfer file tidak didukung secara langsung di Fign yang dienkapsulasi oleh Spring Cloud, tetapi dapat diimplementasikan dengan memperkenalkan paket ekstensi patahan, jadi kami akan berbicara tentang cara mengimplementasikannya secara rinci.
Penyedia layanan (terima file)
Implementasi penyedia layanan relatif sederhana, cukup ikuti metode implementasi normal Spring MVC, seperti:
@RestControllerPublic kelas unggahcontroller {@postmapping (value = "/unggahfile", consumes = mediatype.multipart_form_data_value) public string handefileupload (@RequestPart (value = "file") multipartFile file) {return file.getName (); }}Konsumen layanan (kirim file)
Karena konsumen layanan akan menggunakan Klien Petana, perlu untuk memperkenalkan ketergantungan Petchign pada pengajuan formulir di sini, sebagai berikut:
<dependency> <GroupId> io.github.openfeign.form </groupid> <ArTifactId> Fegnign-Form </t Artifactid> <version> 3.0.3 </version> </dependency> <ArtiFacD> feign. <version> 3.0.3 </version> </dependency> <dependency> <GroupId> Commons-FileUpload </groupId> <ArTifactId> Commons-FileUpload </artifactid> </dependency>
Tentukan Fignclient, dengan asumsi bahwa nama layanan penyedia layanan adalah Upload-Server
@FeignClient (value = "unggah-server", konfigurasi = testserviceClient.multipartsupportConfig.class) antarmuka publik mengunggahService {@postmapping (value = "/unggah", consumers = mediaType.multipart_form_data_value) string handefile) (MEDIATYPE.MULTIPART_FORM_DATA_VALUE)), Consumers = MediaType. @Configuration class multipartsupportConfig {@bean encoder public fignformencoder () {return new springformencoder (); }}}Setelah memulai penyedia layanan, cobalah untuk menulis kasus uji pada konsumen layanan untuk meneruskan file melalui klien patahan yang ditentukan di atas, seperti:
@Test@sneakythrowspublic void testHandleFileUpload () {file file = file baru ("file/aaa.txt"); DISKFILEITEM fileItem = (DISKFILEITEM) DISKFILEITEMFACTORY BARU (). CreateItem ("File", Mediatype.text_plain_value, true, file.getName ()); coba (inputStream input = new fileInputStream (file); outputStream os = fileitem.getoutputStream ()) {ioutils.copy (input, os); } catch (Exception e) {lempar baru ilegalargumentException ("file tidak valid:" + e, e); } MultipartFile Multi = new CommonsMultipartFile (FileItem); log.info (testserviceClient.handlefileupload (multi));}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.