[java] أفضل طريقة لتحميل ملفات متعددة من مستعرض



Answers

لم أستخدمها أبداً مع ملفات بحجم 2 غيغابايت ، لكن برنامج YUI File Uploader كان يعمل بشكل جيد في مشروع سابق. قد تكون مهتمًا أيضًا بهذا البرنامج المساعد jQuery .

ومع ذلك ، ما زلت أعتقد أن برنامج Java الصغير هو الطريق المناسب. أعتقد أنك ستنتهي بحملة أقل وقضايا واجهة المستخدم أكثر مما تتوقع ، وتعمل ميزة السحب / الإفلات بشكل رائع. للسجل ، يستخدم Box.net تطبيق Java صغيرًا للتحميلات السريعة المتعددة الملفات.

Question

أنا أعمل على تطبيق الويب. هناك مكان واحد حيث يمكن للمستخدم تحميل الملفات مع بروتوكول HTTP. هناك خيار بين عنصر تحكم تحميل ملف HTML الكلاسيكي وبين برنامج Java لتحميل الملفات.

إن تحميل ملف HTML الكلاسيكي ليس رائعًا لأنه يمكنك فقط اختيار ملف واحد في كل مرة ، ومن الصعب جدًا الحصول على أي مؤشر للتقدم أثناء التحميل الفعلي (أخيراً حصلت عليه باستخدام جهاز ضبط وقت يقوم بتحديث مؤشر تقدم مع بيانات تم جلبها من الخادم عبر اتصال AJAX). ميزة: انها تعمل دائما.

باستخدام برنامج Java الصغير يمكنني القيام بمزيد من الأشياء: حدد ملفات متعددة في وقت واحد (حتى مجلد) ، ثم ضغط الملفات ، واحصل على شريط تقدم حقيقي ، وملفات drag'n'drop على التطبيق الصغير ، الخ ...
ولكن هناك بعض العوائق:

  • إنه كابوس لجعله يعمل بشكل صحيح على Mac Safari و Mac Firefox (Thanks Liveconnect)
  • واجهة المستخدم ليست واجهة المستخدم الأصلية تمامًا ، ويلاحظ بعض الأشخاص ذلك
  • التطبيق الصغير لا يستجيب كما ينبغي (يمكن أن يكون خطأي ، ولكن كل شيء يبدو جيدًا بالنسبة لي)
  • هناك أخطاء في فئة Java UrlConnection مع HTTPS ، لذلك أستخدم عميل HTTP المشترك لـ Apache للقيام بعملية التحميل HTTP الفعلية. إنها حزمة كبيرة جدًا وتؤدي إلى إبطاء تنزيل ملف .jar
  • لدى عميل HTTP المشترك من Apache أحيانًا صعوبة في استخدام الوكلاء
  • وقت تشغيل جافا كبير جدا

أنا أحتفظ ببرنامج Java هذا منذ فترة ولكنني الآن سئمت من كل العيوب ، ونأخذ بعين الاعتبار كتابة / شراء مكون جديد بالكامل لتحميل ملفات الرسائل.

سؤال

إذا كان لديك المتطلبات التالية:

  • تحميل ملفات متعددة بسهولة من متصفح ، من خلال HTTP أو HTTPS
  • ضغط الملفات لتقليل وقت التحميل
  • يجب أن يعمل التحميل على أي نظام أساسي ، مع واجهة مستخدم أصلية
  • يجب أن تكون قادرًا على تحميل ملفات ضخمة ، تصل إلى 2 غيغابايت على الأقل
  • لديك تفويضا مطلقا على التكنولوجيا

ما هي التكنولوجيا / compontent التي تستخدمها؟

تصحيح :

  • Drag'n'Drop من الملفات على المكون سيكون زائد كبير.
  • يبدو أن هناك الكثير من المشكلات المتعلقة بالأخطاء باستخدام برنامج Flash Player ( إصدارات swfupload المعروفة ). دعم ماك السليم وتحميلها من خلال الوكلاء مع التوثيق هي خيارات لا أستطيع الاستغناء عنها. هذا من المحتمل أن يستبعد كل الخيارات المستندة إلى فلاش :-(.
  • أستبعد جميع خيارات HTML / Javascript فقط لأنه لا يمكنك تحديد أكثر من ملف واحد في كل مرة باستخدام عنصر تحكم HTML الكلاسيكي. إنه لألم النقر فوق n-times زر "استعراض" عندما تريد تحديد ملفات متعددة في مجلد.



هناك عدد من مكونات الفلاش المجانية الموجودة مع إمكانية تحميل ملفات متعددة لطيفة. أنها تستفيد من فئة ActionScripts FileReference مع جهاز استقبال PHP (أو أيا كان) على جانب الخادم. البعض قد كسر مؤخرا مع إطلاق FP10 لكنني على يقين من أن swfupload ستعمل :)

أتمنى أن يساعدك هذا!




أسهل طريقة لتحميل الملفات في جافا هي مكتبة GOJFileUpload.jar

هنا هو البرنامج التعليمي مكتبة gojfileupload:

GOJFileUpload

يعطون طريقتين

  • UploadFile (سلسلة filepath ، imagenames ArrayList ، طلب HttpRequest)
  • UploadFile (سلسلة filepath ، ArrayList dataname ، imagenames ArrayList ، طلب HttpRequest)

سيعيدون لك HashMap اسم الملف بالكامل الذي حملته بعد التحميل في مجلد الوجهة المحدد.







يمكنك تحميل ملفات متعددة باستخدام نماذج HTTP أيضًا ، كما أشار ديف بالفعل ، ولكن إذا كنت مضبوطًا على استخدام ما هو أبعد من ما يقدمه HTTP وجافا سكريبت ، فستفكر بشدة في Flash. هناك بعض الحلول الموجودة مسبقًا مثل MultiPowUpload ، وهي تقدم العديد من الميزات التي تبحث عنها. من الأسهل أيضًا الحصول على معلومات التقدم باستخدام برنامج Flash بدلاً من الحصول على مكالمات AJAX من جافا سكريبت لأن لديك المزيد من المرونة.




Links