การถ่ายโอนไฟล์ไม่ได้รับการสนับสนุนโดยตรงใน Feign Encapsulated โดย Spring Cloud แต่สามารถนำไปใช้ได้โดยการแนะนำแพ็คเกจส่วนขยายแสร้งทำเป็นดังนั้นเราจะพูดคุยเกี่ยวกับวิธีการใช้งานโดยละเอียด
ผู้ให้บริการ (รับไฟล์)
การใช้งานของผู้ให้บริการนั้นค่อนข้างง่ายเพียงทำตามวิธีการใช้งานปกติของ Spring MVC เช่น:
@RestControllerPublic คลาส UploadController {@postmapping (value = "/uploadfile", ใช้ = mediaType.multipart_form_data_value) สตริงสาธารณะ handlefileupload (@requestpart (value = "ไฟล์") ไฟล์ multipartfile) -ผู้บริโภคบริการ (ส่งไฟล์)
เนื่องจากผู้บริโภคบริการจะใช้ไคลเอนต์แสร้งจึงจำเป็นต้องแนะนำการพึ่งพาของ Feign ในการส่งแบบฟอร์มที่นี่ดังนี้:
<การพึ่งพา> <roupId> io.github.openfeign.form </groupId> <ratifactId> feign-form </artifactid> <persion> 3.0.3 </เวอร์ชัน> </predency> <cersion> 3.0.3 </version> </derctency> <การพึ่งพา> <roupId> Commons-FileUpload </GroupID> <ArtIfactId> Commons-FileUpload </artifactId>
กำหนด FeignClient โดยสมมติว่าชื่อบริการของผู้ให้บริการคืออัพโหลดเซิร์ฟเวอร์
@FeIgnClient (value = "Upload-Server", configuration = testServiceClient.multipartsupportConfig.class) อินเตอร์เฟสสาธารณะอัพโหลด Service {@postmapping (value = "/uploadFile", ผู้บริโภค = MediaType.multipart_form_data_varta ไฟล์); @Configuration คลาส MultipartSupportConfig {@Bean Public Encoder FeignFormenCoder () {ส่งคืน SpringFormenCoder ใหม่ (); -หลังจากเริ่มต้นผู้ให้บริการพยายามเขียนกรณีทดสอบบนผู้บริโภคบริการเพื่อส่งไฟล์ผ่านไคลเอนต์ Feign ที่กำหนดไว้ข้างต้นเช่น:
@test@sneakythrowspublic void testhandleFileUpload () {ไฟล์ไฟล์ = ไฟล์ใหม่ ("ไฟล์/aaa.txt"); diskFileItem fileItem = (diskfileItem) ใหม่ diskfileitemfactory (). createItem ("ไฟล์", mediaType.text_plain_value, true, file.getName ()); ลอง (inputStream input = new fileInputStream (ไฟล์); OutputStream OS = fileItem.getOutputStream ()) {ioutils.Copy (อินพุต, OS); } catch (exception e) {โยน unleglargumentException ใหม่ ("ไฟล์ไม่ถูกต้อง:" + e, e); } multipartFile multi = new CommonsMultipartFile (fileItem); log.info (TestServiceClient.HandleFileUpload (Multi));}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น