2010-06-20 43 views
0
conn = httplib.HTTPConnection("www.encodable.com/uploaddemo/") 
conn.request("POST", path, chunk, headers) 

以上是網站「www.encodable.com/uploaddemo/」,我想上傳圖片。使用httplib上傳python文件

我更好地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() 

回答

3

當前,您未使用之前在代碼中聲明的標頭。你應該將它們作爲第四個參數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) 
+0

這就是我想問問,我不知道如何把標題 – 2010-06-20 14:52:56

+1

而且我告訴你,你已經正確地創建了'headers'字典,但是你必須將它傳遞給你的'conn.request'函數,以便它做任何事情。 – gilesc 2010-06-20 17:40:49