这是使用Python脚本中的POST发送文件的几乎重复,但我想添加一个警告:我需要一些能够正确处理字段和附加文件编码的内容.当你将包含非ascii字符的unicode字符串放入混合中时,我已经能够找到解决方案.此外,大多数解决方案不会对数据进行64位编码,以保持7位清洁.
我能想到的最好的事情就是自己编码.这个子程序怎么样?
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
(好吧,所以这段代码只是发送POST数据.但是你显然想要多部分编码的数据,好像你点击了一个"上传文件"按钮,对吧?嗯,这是我在这里和来自的答案非常直接的组合你联系的问题.)