Загрузите файл с Python, используя httplib - PullRequest
1 голос
/ 20 июня 2010
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 Ответ

5 голосов
/ 20 июня 2010

В настоящее время вы не используете заголовки, которые вы объявили ранее в коде.Вы должны предоставить их в качестве четвертого аргумента 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)
...