Datei senden mit POST von einem Python-Skript
Dies ist eine fast-Kopie der Datei senden mit POST von einem Python-Skript, aber ich möchte noch hinzufügen, dass eine Einschränkung: ich brauche etwas, das richtig verarbeitet die Codierung der Felder und angehängte Dateien. Die Lösungen habe ich in der Lage zu finden, die Luft zu sprengen, wenn Sie werfen unicode-Zeichenketten mit nicht-ascii-Zeichen in den mix. Auch die meisten Lösungen, die nicht base64-Kodierung von Daten, um die Dinge 7-bit clean.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beste, was ich denken kann, ist Sie verschlüsseln sich selbst. Wie über dieses Unterprogramm?
(Okay, so dass dieser code nur sendet POST-Daten. Aber scheinbar wollen multipart-kodierte Daten, als wenn Sie auf einen "Datei Hochladen" - Taste, richtig? Gut, es ist eine ziemlich einfache Kombination von dem, was ich hier habe, und die Antworten aus der Frage, die Sie verknüpft.)
PyCURL bietet eine Schnittstelle zum CURL von Python.
http://curl.haxx.se/libcurl/python/
Curl tun alles, was Sie brauchen. Kann Sie die übertragung von Binär-Dateien richtig, und unterstützt viele Zeichenkodierungen. Jedoch, Sie haben, um sicherzustellen, dass die richtige Zeichenkodierung ein custom-header beim Posten von Dateien.
Speziell, müssen Sie möglicherweise auf "Datei hochladen" Stil POST:
http://curl.haxx.se/docs/httpscripting.html (Abschnitt 4.3)
Mit curl (oder einem anderen HTTP-client), die Sie haben können, um die content-encoding:
Content-Type: text/html; charset=UTF-8
Beachten Sie auch, dass die request-Header muss ascii-Format haben, und dazu gehört auch die
url (so stellen Sie sicher, dass Sie ordnungsgemäß Ihre Flucht möglicherweise unicode-URLs. Es gibt
unicode-escapes für die HTTP-Header), Diese wurde vor kurzem behoben, die in Python:
http://bugs.python.org/issue3300
Ich hoffe, das hilft, es gibt mehr info auf das Thema, einschließlich Ihrem Standard-Zeichensatz auf Ihrem server, etc.
Nur diese Bibliothek verwenden, und senden Sie Dateien.
http://github.com/seisen/urllib2_file/