1. محلل ملف التكوين
يحتاج كل من مقدمي الخدمات والمستهلكين إلى تحلات ملفات التكوين ، وهنا نستخدم المشاع FilePload لاستبدال المحلل الأصلي:
يعتمد:
<Rependency> <roupeD> commons-filepload </rougiD> <StifactId> المشاع filepload </artifactid> <sophy> 1.3.1 </version> </sependency>
حقن الفول:
bean (name = "multipartresolver") multipartresolver public multipartresolver () {commonsmultipartresolver com = new commonsmultipartresolver () ؛ com.setDefaultEncoding ("UTF-8") ؛ إرجاع com ؛}استبعاد المحلل الأصلي من إدخال البرنامج:
springbootapplication (exclude = {multipartautoconfiguration.class}) 2. مزود الخدمة ، أي تكوين الطرف الذي يتلقى الملف
كتابة وحدة التحكم:
@desponseBody@requestMapping (value = "/epload" ، method = {requestMethod.post} ، تنتج = {mediaType.application_json_utf8_value} ، المستهلكين = mediaType.multipart_form_data_value) النتيجة العامة <String> requestpart (@requestpart (file) id) {string filename = file.getoriginalfilename () ؛ تمديد السلسلة = fileOperateUtil.suffix (اسم الملف) ؛ fileOperateUtil.copy ("e: //" + filename ، file) ؛ return resultbuilder.success ("OK") ؛}يحدد REQUESTPART الملف ، و requestparam التالي هو معلمة إضافية. لاحظ أن المعلمة الإضافية لا يمكن أن تتجاوز حد طول عنوان URL.
3. تكوين مستهلك الخدمة
يعتمد:
<Rependency> <roupEd> io.github.openfeign.form </rougiD> <intifactid> feign-form-spring </stifactid> <الإصدار> 3.2.2 </version> </sependency> <splection> 3.2.2 </version> </sependency>
تكوين ترميز الملفات:
استيراد feign.codec.encoder ؛ استيراد feign.form.spring.springformencoder ؛ استيراد org.springframework.beans.factory.ObjectFactory ؛ استيراد org.springframework.beans.factory.annotation.Atowired ؛ org.springframework.boot.autoconfigure.web.httpmessageconverters ؛ استيراد org.springframework.cloud.netflix.feign.support.springencoder ؛ استيراد org.springframework.context.annotation org.springframework.context.annotation.configuration ؛ configurationpublic class multipartSupportConfig {autowired privatefactory <httpmessageconverters> messageconverters ؛ Bean Public Encoder FeignFormenCoder () {return New SpringFormenCoder (New SpringEncoder (MessageConverters)) ؛ }}تعريف الواجهة المظلي:
feignclient (name = "test-upload") الواجهة العامة exploadservice {responsebody @ النتيجة <String> uploadfile (@requestpart ("file") ملف multipartfile ،@requestparam ("id") معرف طويل) ؛} إنه مشابه لطريقة الكتابة لواجهة التظاهر العادية ، انتبه إلى نفس الطريقة التعليقات التوضيحية والمعلمات كوحدة controller لمزود الخدمة.
مكتوبة Controller . يستقبل Controller معلومات الملف والمعلمات الإضافية المنقولة من الواجهة الأمامية ، ثم تنقلها إلى الطرف البعيد من خلال واجهة Feign:
// Inject Feign interfaceautoWiredPrivate UploadService UploadService ؛@requestmapping (value = "/upload" ، method = requestMethod.post ، reductes = "application/json ؛ charset = utf-8")@responsebodyp report <string> testupload (httpletRequest request ، {string) multiparthttpservletrequest mrequest = (multiparthttpservletrequest) طلب ؛ الخريطة <string ، multipartfile> fileMap = mrequest.getFileMap () ؛ لـ (multipartfile mfile: fileMap.values ()) {String filename = mfile.getoriginalfilename () ؛ النتيجة = TOPLOADService.Uploadfile (mfile ، id) ؛ } نتيجة الإرجاع ؛} 4. ملخص
أخيرًا ، دعونا نفرز العملية. يتلقى مستهلك الخدمة ملفات تم نقلها من الواجهة الأمامية (مثل المتصفحات) ، ولكنها لا تؤدي معالجة الأعمال. ثم ، من خلال واجهة استدعاء Feign ، يتم تمرير الملف إلى مزود الخدمة. بعد أن يتلقى مزود الخدمة الملف ، فإنه يؤدي معالجة الأعمال المقابلة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.