سؤال

وأنا أعلم أن مثل هذا النوع من الأسئلة موجودة في سادس لكنها لا تحتاج عامة الاقتراح.أنا في حاجة الى ميزة تحميل ملفات المستخدم التي يمكن أن يكون الحجم أكثر من 1 غيغابايت.هذه الميزة سوف تكون إضافة على القائمة file-upload ميزة موجودة في التطبيق الذي يلبي ملفات أصغر.الآن, وهنا بعض من الخيارات

  1. استخدام HTTP و Java.وإرسال الملفات في قطع والانضمام لهم في الخادم.ولكن كيف خنق n/w.
  2. استخدام HTTP فليكس التطبيق.هل هو أفضل من الصغير wrt التوافق متصفح & أي بيئة أخرى القضايا ؟
  3. استخدام FTP أو بالأحرى SFTP بدلا من HTTP بروتوكول أسرع عملية التحميل

يرجى اقتراح.

وعلاوة على ذلك, يجب أن نتأكد من أن هذه عملية التحميل لا تعوق مهمة من المستخدمين الآخرين أو بعبارة أخرى لا تلتهم المستخدم الآخر ب/ث.أي الآليات التي يمكن القيام به في n/w مستوى إلى خنق هذه العمليات ؟

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

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

المحلول

لإرسال الملفات إلى خادم، إلا إذا كنت يملك لاستخدام HTTP، FTP هو الطريق للذهاب. خنق، أنا لست متأكدا تماما، على الأقل ليس برمجيا.

شخصيا، يبدو أن قيود سرعة التحميل سيكون بشكل أفضل على جانب الخادم رغم ذلك.

نصائح أخرى

استخدام أي جانب العميل اللغة التي تريدها (جافا التطبيق ، فليكس ، الخ) ، ودفع إلى الخادم مع HTTP PUT (لا فليكس) أو POST.في جانب الملقم كود جافا ، تنظيم تدفق بايت في تيار الإدخال حلقة.الخام, بسيطة, عينة مقتطف من أن حدود عرض النطاق الترددي أي أسرع من المتوسط <= 10KB/الثانية:

InputStream is = request.getInputStream();
OutputStream os =  new FileOutputStream(new File("myfile.bin"));
int bytesRead = 0;
byte[] payload = new byte[10240];

while (bytesRead >= 0) {
    bytesRead = is.read(payload);

    if (bytesRead > 0) 
        os.write(payload, 0, bytesRead);

    Thread.currentThread().sleep(1000);
}

(مع المزيد من التعقيد يمكن أكثر دقة تنظيم تيار واحد عرض النطاق الترددي ، لكن الأمر يزداد تعقيدا عند النظر في مأخذ المخازن المؤقتة هذه."جيدة بما فيه الكفاية" عادة ما تكون جيدة بما فيه الكفاية.)

طلبي يفعل شيئا من هذا القبيل إلى ما سبق-نحن تنظم على حد سواء (POST و PUT) و (GET) أسفل تيار عرض النطاق الترددي.نحن نقبل الملفات في 100s MB في كل يوم اختبار ما يصل إلى 2GB.(ما وراء 2GB هناك المزعجة جافا الباحث بدائية القضايا للتعامل مع.) العملاء لدينا هي على حد سواء فليكس curl.بالنسبة لي يمكن أن تعمل من أجلك.

في حين بروتوكول نقل الملفات ، يمكنك تجنب العديد (وليس كل) مشاكل جدار الحماية باستخدام HTTP.

إذا كنت ترغب في تقليل عرض النطاق الترددي، فقد ترغب في إرسال البيانات المضغوطة (ما لم تكن مضغوطا بالفعل)، فقد يوفر هذا 2-3 أضعاف حجم البيانات اعتمادا على ما تقوم بإرساله.

للحصول على مثال على الممارسات الجيدة لتحميل الملفات الكبيرة، وطرق مختلفة لمعالجة ذلك، إلقاء نظرة على Flickr.com (قد تضطر إلى التسجيل للحصول على صفحة الرصية)

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

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