لا يتم دعم نقل الملفات مباشرة في Feign Classed بواسطة Spring Cloud ، ولكن يمكن تنفيذه من خلال تقديم حزم تمديد Feign ، لذلك سنتحدث عن كيفية تنفيذها بالتفصيل.
مزود الخدمة (تلقي الملفات)
تطبيق مزود الخدمة بسيط نسبيًا ، ما عليك سوى اتباع طريقة التنفيذ العادية لـ Spring MVC ، مثل:
RestControllerPublic Class UploadController {postMapping (value = "/uploadfile" ، يستهلك = mediaType.multipart_form_data_value) السلسلة العامة المقبض filefilePload (requestpart (value = "file") }}مستهلك الخدمة (إرسال ملف)
نظرًا لأن مستهلك الخدمة سيستخدم عميل Feign ، فمن الضروري تقديم تبعية Feign على تقديم النموذج هنا ، على النحو التالي:
<Rependency> <roupend> io.github.openfeign.form </rougiD> <intifactid> feign-form </intifactid> <splection> 3.0.3 </version> </sependency> <redency> <roucid> io.github.openfeign.form </groupid> <splection> 3.0.3 </version> </sependency> <reperency> <roupiD> commons-filepload </rougeid> <StifactId> fileupload </shintifactid> </repreadency>
حدد Feignclient ، على افتراض أن اسم خدمة مزود الخدمة هو خادم التحميل
@dignclient (value = "upload-server" ، configuration = testServicEclient.multipartSupportConfig.class) واجهة عامة exploadservice ملف)؛ Configuration Class MultipartSupportConfig {bean public Encoder FeignFormenCoder () {return new SpringFormenCoder () ؛ }}}بعد بدء مزود الخدمة ، حاول كتابة حالات اختبار على مستهلك الخدمة لتمرير الملف من خلال عميل Feign المحدد أعلاه ، مثل:
@test@sneakythrowspublic void testHandleFileUpload () {file file = file new ("files/aaa.txt") ؛ diskfileitem fileItem = (diskfileItem) new DiskfileItemFactory (). createItem ("file" ، mediaType.text_plain_value ، true ، file.getName ()) ؛ Try (inputStream input = new FileInputStream (file) ؛ OutputStream OS = fileItem.getOutputStream ()) {ioutils.copy (input ، OS) ؛ } catch (استثناء e) {رمي new alfictalargumentException ("ملف غير صالح:" + e ، e) ؛ } multi -multi = new commonsmultipartfile (fileItem) ؛ log.info (TestServiceClient.handlefileupload (multi)) ؛}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.