1

我在发布的自定义多部分表单/数据中遇到图像未正确编码的问题。发出 HTTP POST 数据包后,我注意到代表图像的字节完全不同。我通过捕获工作场景的数据包(使用 Web 浏览器)并使用我的 python 应用程序进行了比较。

多部分表单主体的构造方式没有其他问题,只是图像没有为主体正确编码。

这是我打开图像并准备将其发送出去的操作:

image_data=(open('plane.jpg',mode='rb').read()) ## image_data is the jpeg in bytes                ------------- fist bytes
body.append(str(image_data))   ## coverting the data to a string such that it can be appended to the body array.  ------ bytes to string
body.append(CRLF)
body.append('--' + boundary + '--')
body.append(CRLF)
body=''.join(body)

## starting the post
unicode_data = body.encode('utf-8',errors='ignore')  ## --------string encoded
multipart_header['content-length']=len(unicode_data)
req = urllib.request.Request('http://localhost/api/image/upload', data=unicode_data, headers=multipart_header) ## Packet sent here and the image section of the unicode_data looks wrong but the other sections look good.

图片上传:http ://tinypic.com/view.php?pic=5aq3w6&s=6

那么编码这个图像并将其附加为要发送的正文的一部分的正确方法是什么?除了 python 3.3 附带的 API 之外,我不想使用任何 API。并希望留在 urllib 和 urllib2 中,我尝试将图像的字节版本附加到正文中,但显然字符串数组只能包含字符串,这就是为什么我创建了一个以字节为单位的图像的新字符串;我认为这是它下山的地方。

非常感谢帮助!

4

0 回答 0