مشاركات نموذج متعددة المخزنة في روبي
-
03-07-2019 - |
سؤال
أنا أستخدم حاليًا 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