使用httplib在Python中上传文件
conn = httplib.HTTPConnection("www.encodable.com/uploaddemo/")
conn.request("POST", path, chunk, headers)
上面是一个网站 "www.encodable.com/uploaddemo/",我想在这里上传一张图片。
我对 php
比较熟悉,所以对这里的路径和头部信息不是很理解。在上面的代码中,chunk
是一个包含我图片文件的对象。由于我在没有了解头部和路径的情况下就尝试实现,所以下面的代码出现了错误。
import httplib
def upload_image_to_url():
filename = '//home//harshit//Desktop//h1.jpg'
f = open(filename, "rb")
chunk = f.read()
f.close()
headers = {
"Content−type": "application/octet−stream",
"Accept": "text/plain"
}
conn = httplib.HTTPConnection("www.encodable.com/uploaddemo/")
conn.request("POST", "/uploaddemo/files/", chunk)
response = conn.getresponse()
remote_file = response.read()
conn.close()
print remote_file
upload_image_to_url()
1 个回答
6
目前,你在代码中声明的头信息并没有被使用。你应该把它们作为第四个参数传递给 conn.request
:
conn.request("POST", "/uploaddemo/files/", chunk, headers)
另外,顺便提一下:你可以直接把 open("h1.jpg", "rb")
传给 conn.request
,而不需要先把它完全读入 chunk
。因为 conn.request
可以接受类似文件的对象,这样逐步读取文件会更高效:
conn.request("POST", "/uploaddemo/files/", open("h1.jpg", "rb"), headers)