使用httplib在Python中上传文件

2 投票
1 回答
11357 浏览
提问于 2025-04-16 00:13
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)

撰写回答