1. ตัวแยกวิเคราะห์ไฟล์กำหนดค่า
ทั้งผู้ให้บริการและผู้บริโภคต้องการตัวแยกวิเคราะห์การกำหนดค่าและที่นี่เราใช้ Commons-FilePiLoad เพื่อแทนที่ตัวแยกวิเคราะห์ดั้งเดิม:
พึ่งพา:
<การพึ่งพา> <roupId> Commons-FileUpload </groupId> <ratifactId> Commons-FileUpload </artifactId> <version> 1.3.1 </เวอร์ชัน>
ฉีดถั่ว:
@Bean (name = "MultipartResolver") Public MultipartResolver MutipartResolver () {CommonsMultipArtresolver com = new CommonsMultipartResolver (); com.setDefaultEncoding ("UTF-8"); กลับ com;}ไม่รวมตัวแยกวิเคราะห์ดั้งเดิมจากรายการโปรแกรม:
@springbootapplication (exclude = {multipartautoconfiguration.class}) 2. ผู้ให้บริการนั่นคือการกำหนดค่าของบุคคลที่ได้รับไฟล์
การเขียนคอนโทรลเลอร์:
@responsebody@requestmapping (value = "/upload", method = {requestmethod.post}, ผลิต = {mediaType.application_json_utf8_value}, ผู้บริโภค = mediaType.multipart_form_data_value) id) {String filename = file.getoriginalfilename (); String Extend = FileOperateUtil.suffix (ชื่อไฟล์); FileOperateUtil.Copy ("E: //" + ชื่อไฟล์, ไฟล์); return resultbuilder.success ("ตกลง");}@RequestPart ระบุไฟล์ @RequestParam ต่อไปนี้เป็นพารามิเตอร์พิเศษ โปรดทราบว่าพารามิเตอร์พิเศษต้องไม่เกินขีด จำกัด ความยาว URL
3. การกำหนดค่าผู้บริโภคบริการ
พึ่งพา:
<การพึ่งพา> <roupId> io.github.openfeign.form </groupId> <ratifactid> feign-form-spring </artifactid> <sersion> 3.2.2 </version> <Sersion> 3.2.2 </Sersion> </dermentency>
การกำหนดค่าการเข้ารหัสไฟล์:
นำเข้า feign.codec.encoder; นำเข้า feign.form.spring.springformencoder นำเข้า org.springframework.beans.factory.objectfactory; นำเข้า org.springframework.beans.factory.annotation.autowired; org.springframework.boot.autoconfigure.web.httpmessageConverters; นำเข้า org.springframework.cloud.netflix.feign.support.springencoder org.springframework.context.annotation.configuration; @configurationPublic คลาส MultipartsupportConfig {@autowired Private ObjectFactory <httpmessageConverters> MessageConverters; @Bean Public Encoder FeignFormenCoder () {ส่งคืน SpringFormenCoder ใหม่ (SpringenCoder ใหม่ (MessageConverters)); -คำจำกัดความอินเทอร์เฟซปลอม:
@feignClient (name = "test-upload") อินเตอร์เฟสสาธารณะอัพโหลด Service {@ResponseBody @RequestMapping (value = "/upload", method = {requestMethod.post}, ผลิต = {mediaType.Application_JSON_UTF8_VALUE} ผลลัพธ์ <String> uploadFile (@RequestPart ("ไฟล์") ไฟล์ MultipArtFile,@RequestParam ("ID") Long ID);} มันคล้ายกับวิธีการเขียนของอินเทอร์เฟซการแสร้งทำเป็นธรรมดาให้ความสนใจกับคำอธิบายประกอบและพารามิเตอร์วิธีเดียวกันในฐานะ controller ของผู้ให้บริการ
Controller ถูกเขียนขึ้น Controller จะได้รับข้อมูลไฟล์และพารามิเตอร์เพิ่มเติมที่ส่งจากส่วนหน้าจากนั้นส่งไปยังปลายระยะไกลผ่านอินเตอร์เฟสแสร้งทำเป็น:
// interner interface feign @autowiredPrivate UploadService UploadService; @RequestMapping (value = "/upload", method = requestMethod.post, ผลิต = "แอปพลิเคชัน/json; charset = utf-8")@responsebody multiparthttpservletRequest mrequest = (multiparthttpservletrequest) คำขอ; แผนที่ <string, multipartfile> fileMap = mrequest.getFileMap (); สำหรับ (multipartFile mFile: fileMap.Values ()) {สตริง filename = mfile.getoriginalfilename (); result = uploadService.uploadFile (mFile, id); } ผลตอบแทนผลลัพธ์;} 4. สรุป
ในที่สุดมาเรียงลำดับกระบวนการกันเถอะ ผู้บริโภคบริการจะได้รับไฟล์ที่ส่งจากส่วนหน้า (เช่นเบราว์เซอร์) แต่ไม่ได้ดำเนินการประมวลผลทางธุรกิจ จากนั้นผ่านอินเทอร์เฟซการโทรแสวงหาไฟล์จะถูกส่งไปยังผู้ให้บริการ หลังจากผู้ให้บริการได้รับไฟล์แล้วจะทำการประมวลผลทางธุรกิจที่สอดคล้องกัน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น