Buffered Mehrteiliger FORMULARPLZ in Ruby
-
03-07-2019 - |
Frage
Ich bin derzeit mit Net::HTTP
in einem Skript Ruby-Dateien über eine mehrteiliger Form Post auf eine Website zu veröffentlichen. Es funktioniert gut für kleine Dateien, aber ich muß häufig mit diesem Skript sehr große Dateien senden und HTTP#post
scheint nur post-Daten als String
Objekt zu akzeptieren, was bedeutet, dass die Datei schicke ich in dem Speicher gelesen, bevor irgendetwas werden muss kann gesendet werden. Dieses Skript wird auf einem langen Produktionsserver ausgeführt wird, so ist es nicht akzeptabel hunderte Megabyte RAM verschlingen nur eine Datei zu senden.
Idealerweise würde es eine Methode, die eine Puffergröße und ein IO
Objekt gegeben werden könnte, und würde Puffer große Brocken von Daten abzuschicken, vom IO
Objekt Lesen nur bei Bedarf. Was wäre der beste Weg, um dies geschehen zu lassen? Habe ich etwas Relevantes in Net::HTTP
verpassen?
Aktualisieren : Net::HTTP#body_stream(input)
sieht gut aus, obwohl die Dokumentation ist eher ... spärlich. Wer in der Lage zeigen Sie mir ein gutes Beispiel für diese in Aktion?
Lösung
Verwenden Net :: HTTP # body_stream (Eingang)
Beispiel für mehrteiliger Beitrag ohne Streaming :
Andere Tipps
Eigentlich habe ich es geschafft, eine Datei mit body_stream hochladen. Der vollständige Quellcode ist hier: http://stanislavvitvitskiy.blogspot.com/2008/12/ mehrt-post-in-ruby.html