2009-06-25 8 views
0

Je suis venu ici par cette question: Send file using POST from a Python scriptPython 2.6 - Télécharger le fichier zip - Poster 0,4

Et en gros c'est ce que je dois, plus quelques-uns supplémentaires.

Outre les zipfile som informations supplémentaires sont nécessaires et le POST_DATA ressemble à ceci:

POSTDATA =-----------------------------293432744627532 
Content-Disposition: form-data; name="categoryID" 

1 
-----------------------------293432744627532 
Content-Disposition: form-data; name="cID" 

-3 
-----------------------------293432744627532 
Content-Disposition: form-data; name="FileType" 

zip 
-----------------------------293432744627532 
Content-Disposition: form-data; name="name" 

Kylie Minogue 
-----------------------------293432744627532 
Content-Disposition: form-data; name="file1"; filename="At the Beach x8-8283.zip" 
Content-Type: application/x-zip-compressed 

PK........................ 

Est-ce moindrement possible avec le module affiche 0,4 (et avant de vous demander, oui, je suis assez nouveau Python ...)

Meilleures salutations, Brian K. Andersen

Répondre

4

affiche a le soutien multipart et opérateurs booléens.
Vous pouvez essayer quelque chose comme ceci (modifié de la documentation de l'affiche):

# test_client.py 
from poster.encode import multipart_encode 
from poster.streaminghttp import register_openers 
import urllib2 

# Register the streaming http handlers with urllib2 
register_openers() 

# headers contains the necessary Content-Type and Content-Length 
# datagen is a generator object that yields the encoded parameters 
datagen, headers = multipart_encode({ 
    'categoryID' : 1, 
    'cID'  : -3, 
    'FileType' : 'zip', 
    'name'  : 'Kylie Minogue', 
    'file1'  : open('At the Beach x8-8283.zip') 
}) 

# Create the Request object 
request = urllib2.Request("http://localhost:5000/upload_data", datagen, headers) 

# Actually do the request, and get the response 
print urllib2.urlopen(request).read()