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

Au-dessus est le site « www.encodable.com/uploaddemo/ » où je veux télécharger une image.Envoyer un fichier python en utilisant httplib

Je suis mieux versé dans php donc je suis incapable de comprendre la signification du chemin et des en-têtes ici. Dans le code ci-dessus, chunk est un objet constitué de mon fichier image. Le code suivant génère une erreur car j'essayais de l'implémenter sans aucune connaissance des en-têtes et du chemin.

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() 

Répondre

3

Actuellement, vous n'utilisez pas les en-têtes que vous avez déclarés précédemment dans le code. Vous devez leur fournir le quatrième argument conn.request:

conn.request("POST", "/uploaddemo/files/", chunk, headers) 

En outre, remarque: vous pouvez passer directement dans open("h1.jpg", "rb")conn.request sans le lire complètement dans chunk premier. conn.request accepte des objets semblables aux fichiers et il sera plus efficace pour diffuser le fichier un peu à la fois:

conn.request("POST", "/uploaddemo/files/", open("h1.jpg", "rb"), headers) 
+0

Voilà ce que je suis en train de demander je ne sais pas comment mettre les en-têtes –

+1

Et je suis vous dire que vous avez correctement créé le dictionnaire 'headers', mais vous devez le passer à votre fonction' conn.request' pour qu'il puisse faire quoi que ce soit. – gilesc

Questions connexes