سؤال

أنا أستخدم حاليًا Net::HTTP في برنامج نصي Ruby لنشر الملفات إلى موقع ويب عبر منشور نموذج متعدد. إنه يعمل بشكل رائع بالنسبة للملفات الصغيرة ، لكن يتعين عليّ إرسال ملفات كبيرة جدًا باستخدام هذا البرنامج النصي ، و HTTP#post يبدو فقط لقبول بيانات البريد باعتبارها أ String الكائن ، مما يعني أن الملف الذي أرسله يجب أن تقرأ في الذاكرة قبل إرسال أي شيء. يعمل هذا البرنامج النصي على خادم إنتاج مشغول ، لذلك من غير المقبول أن ترفع مئات ميغابايت من ذاكرة الوصول العشوائي فقط لإرسال ملف.

من الناحية المثالية ، ستكون هناك طريقة يمكن إعطاؤها حجم المخزن المؤقت و IO كائن ، وسوف يرسل قطعًا بحجم المخزن المؤقت للبيانات ، والقراءة من IO كائن فقط كما هو مطلوب. ما هي أفضل طريقة لتحقيق ذلك؟ هل فاتني شيء ذي صلة Net::HTTP?

تحديث: Net::HTTP#body_stream(input) تبدو جيدة ، على الرغم من أن الوثائق هي ... متفرق. أي شخص قادر على توجيهي إلى مثال جيد على ذلك في العمل؟

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

المحلول

استخدم Net :: http#body_stream (إدخال)

مثال على منشور متعدد الأطوار بدون تدفق:

نصائح أخرى

في الواقع تمكنت من تحميل ملف باستخدام body_stream. رمز المصدر الكامل هنا:http://stanislavvitvitskiy.blogspot.com/2008/12/multipart-post-in-ruby.html

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