كيف يمكنني التعامل مع طلبات نشر Multipart/Form-Data في Servlet Java؟

StackOverflow https://stackoverflow.com/questions/3510788

سؤال

أواجه صعوبة في التعامل مع طلبات multipart/form-data مع خادم تطبيق Java الخاص بي. من ما اكتشفته ، توفر مواصفات Servlet 3.0 طرقًا مثل httpservletrequest.getParts () ، والتي ستكون مثالية لمعالجة بيانات النموذج التي تم تحميلها إلى servlet.

ومع ذلك ، فإن هذه الطريقة هي جزء من مواصفات Servlet 3.0 ، ولا يدعم خادم التطبيق (Tomcat 6) هذا بعد. حتى مع ملف Web.xml سعة 3.0 و Java EE 6 LIBS ، أحصل على الاستثناء التالي عند محاولة الاتصال بـ getParts ():

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getParts()Ljava/util/Collection;

تبديل خوادم التطبيق ليس خيارًا ممكنًا لهذا المشروع. هل هناك أي مكتبات طرف ثالث متاحة لمعالجة عمليات البيانات المتعددة/النماذج داخل Java Servlets؟

هل كانت مفيدة؟

المحلول

الدفع Apache Commons FileUpload. يمنحك واجهة برمجة برمجية لتحليل طلب متعدد ، وتكرار من خلال أجزاء منه بشكل فردي.

لقد استخدمته في الماضي لمعالجة متعددة الأوقات مباشرة ، وهي تعمل بشكل جيد دون أن تكون معقدة بشكل مفرط.

نصائح أخرى

Tomcat 6 لا يدعم مواصفات Servlet 3.0. يجب أن تحاول القيام بذلك على Tomcat 7 ، لكنني لست متأكدًا مما إذا كانت هذه الوظيفة موجودة في الإصدار التجريبي المتاح حاليًا. من المتوقع أن تكون الوظيفة موجودة في إصدار الإنتاج.

يمكنك متابعة استخدام Apache Commons FileUpload مثل المنشور في الإجابة الأخرى ، أو يمكنك استخدام Glassfish (اعتمادًا على المرحلة الحالية ونوع مشروعك).

عندما استخدمنا طريقة POST أكثر من البيانات ، يتم تشفير البيانات ، لذلك يتعين علينا استخدام ServletFileUpload للحصول على البيانات المطلوبة واستخدام FileItemIterator يمكننا الحصول على جميع بيانات النماذج.

أنا بالفعل أجب على هذا الرابط كيفية معالجة نموذج مرسلة من Google Web Tools في Servlet

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top