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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top