J'utilise actuellement Net::HTTP
dans un script Ruby pour publier des fichiers sur un site Web via une publication en plusieurs parties. Cela fonctionne très bien pour les petits fichiers, mais je dois fréquemment envoyer des fichiers très volumineux en utilisant ce script, et HTTP#post
semble seulement accepter les données post comme un objet String
, ce qui signifie que le fichier que j'envoie doit être lu avant tout Peut être envoyé. Ce script s'exécute sur un serveur de production occupé, il est donc inacceptable d'engloutir des centaines de mégaoctets de RAM juste pour envoyer un fichier.Posts de formulaire en plusieurs parties tamponnées en Ruby
Idéalement, il y aurait une méthode qui pourrait recevoir une taille de tampon et un objet IO
, et enverrait des blocs de données de la taille d'un tampon, en lisant depuis l'objet IO
seulement comme requis. Quel serait le meilleur moyen d'y arriver? Ai-je manqué quelque chose de pertinent dans Net::HTTP
?
Mise à jour: Net::HTTP#body_stream(input)
semble bon, même si la documentation est plutôt ... clairsemée. Quelqu'un en mesure de me montrer un bon exemple de cela en action?
Ce lien est cassé – adaam