Il s'agit d'un quasi-doublon de Send file using POST from a Python script, mais je voudrais ajouter une mise en garde: J'ai besoin de quelque chose qui gère correctement l'encodage des champs et des fichiers joints. Les solutions que j'ai pu trouver explosent lorsque vous lancez dans le mixage des chaînes Unicode contenant des caractères non-ascii. De plus, la plupart des solutions ne codent pas en base 64 pour garder les choses propres en 7 bits.Envoyer un fichier à l'aide de POST à partir d'un script Python
Répondre
La meilleure chose que je puisse penser est de l'encoder vous-même. Que diriez-vous de ce sous-programme?
from urllib2 import Request, urlopen
from binascii import b2a_base64
def b64open(url, postdata):
req = Request(url, b2a_base64(postdata), headers={'Content-Transfer-Encoding': 'base64'})
return urlopen(req)
conn = b64open("http://www.whatever.com/script.cgi", u"Liberté Égalité Fraternité")
# returns a file-like object
(D'accord, donc ce code envoie juste POST-données. Mais vous voulez apparemment des données multipart codé, comme si vous avez cliqué sur un bouton « Envoyer un fichier », non? Eh bien, il est une combinaison assez simple de ce J'ai ici et les réponses de la question que vous avez liée.)
PyCURL fournit une interface à CURL à partir de Python.
http://curl.haxx.se/libcurl/python/
Curl fera tout ce que vous avez besoin. Il peut transférer des fichiers binaires correctement, et supporte de nombreux encodages. Cependant, vous devez vous assurer que le codage de caractères approprié est un en-tête personnalisé lors de l'envoi de fichiers.
Plus précisément, vous devrez peut-être faire un style 'télécharger le fichier' POST:
http://curl.haxx.se/docs/httpscripting.html (section 4.3)
Avec boucle (ou tout autre client HTTP), vous devez procéder à l'encodage de contenu:
Type de contenu: text/html; charset = UTF-8
En outre, il faut savoir que les en-têtes de demande doivent être ascii, et cela inclut l'URL (alors assurez-vous échapper correctement vos URL éventuellement unicode. Il y a unicode échappe pour les en-têtes HTTP) Cette a récemment été fixé en Python:
http://bugs.python.org/issue3300
J'espère que cette aide, il y a plus d'informations sur le sujet, y compris la configuration de votre caractère par défaut défini sur votre serveur, etc.
il suffit d'utiliser cette bibliothèque et envoyer dans les fichiers.
- 1. Comment envoyer une requête HTTP POST à un serveur à partir d'Excel à l'aide de VBA?
- 2. Comment envoyer un tableau d'objet javascript à un script PHP via $ .post?
- 3. Python: Lire un fichier (à partir d'un serveur externe)
- 4. Envoyer un fichier à partir d'une page Web dans Outlook
- 5. Envoyer du courrier à partir de Python en utilisant SMTP
- 6. appelez un C#. ASPX script à partir de html
- 7. créer un fichier .mat à partir de python
- 8. Fichier Python à GAE
- 9. Envoi de requêtes GET à un script basé sur POST?
- 10. Envoyer un message à l'application .NET à partir de javascript?
- 11. Télécharger à partir de EXPLOSM.net Comics Script [Python]
- 12. Comment puis-je envoyer un fichier dans une requête POST?
- 13. Envoyer le résultat de plusieurs commandes à un fichier texte?
- 14. envoyer des commandes à une fenêtre/un processus démarré à partir d'un fichier de commandes
- 15. Obtention d'un fichier à partir d'un POST HTTPWebRequest entrant
- 16. Création d'un seul fichier exe à partir du code Python
- 17. Comment utiliser la commande POST pour envoyer un fichier?
- 18. Exécuter un script php (distant) à partir d'un script python (local)
- 19. Envoyer une requête HTTP à partir du fichier VC++
- 20. Si jquery POST à un fichier PHP, les cookies fonctionneront?
- 21. Envoyer des informations de script au module Python
- 22. structure de données laide à la recherche java
- 23. Envoyer un e-mail à partir d'un site Web sans script côté serveur
- 24. Création d'un fichier mdf à partir du script SQL
- 25. Génération d'un fichier XML à partir d'un script
- 26. Exécution d'un fichier jar à partir d'un script shell
- 27. Envoyer des messages SQL à un fichier journal
- 28. Envoyer un formulaire à Facebox
- 29. Comment exécuter un script PowerShell à partir de SSIS
- 30. Envoyer un message xmpp à l'aide d'une bibliothèque python