Python将二进制数据写入MIME信息集

时间:2012-06-15 07:44:46

标签: python binary httplib2

我想使用httplib2发布一个HTTP请求,其中包含一些使用此信息集的xml和一些二进制数据:

MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
...
--MIME_boundary
Content-Type: application/xop+xml; 

// [the xml string goes here...]

--MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/me.png>

// [the binary octets for png goes here...]

我的方法是生成一个txt文件,然后填写xml和二进制数据。

我在将二进制数据写入png中的文件时遇到问题:

pngfile = open(pngfile, "rb")
bindata = pngfile.read()

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我的建议是在these examples中使用Python的标准mime库。 试试这个:

from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart

msg = MIMEMultipart()
# Attach XML
xml = MIMEBase('application','xop+xml')
xml.set_payload(<xml data here>)
msg.attach(xml)

# Attach image
img = MIMEImage(<image data here>, _subtype='png')
msg.attach(img)

# Export the infoset
print msg.as_string()