Je souhaite remplir un formulaire Web avec un script python et l'envoyer avec une requête POST. Le problème est que la forme a fileuploading. J'ai trouvé ceci: poster pour python. Donc, je suis venu avec FireBug sur le site avec le formulaire et rempli. Ce que je vis:Envoyer une image avec un message
values[action] add_save
values[mod] blog
values[depth] 2
values[pid] 121
values[title] title
values[title_eng] title_en
img PNG...[a lot of binary image data]
Ce site de utilise l'autorisation, j'ai donc:
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, theurl, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = poster.streaminghttp.register_openers()
opener.add_handler(authhandler)
Maintenant, je suis venu avec l'échantillon par défaut du site et a écrit le code:
index = """some parsed integer"""
datagen, headers = multipart_encode({
'values[action]': 'add_save',
'values[mod]': 'blog',
'values[depth]': '2',
'values[pid]': index,
'values[title]' : 'title',
'values[title_eng]' : 'title_eng',
'img': open('1.png', 'rb')
})
request = urllib2.Request(theurl, datagen, headers)
getdata = urllib2.urlopen(request)
print getdata.read()
Je ne J'ai des erreurs, etc. Mais après l'envoi du POST le script ne l'ajoute pas dans la base de données (quand je fais cela à la main, tout va bien).
J'ajouté ce code:
for value in datagen:
print value
Et le résultat est: link. (123 nombre dans le texte est cette valeur de la variable d'index).
Merci, je vais vérifier dans quelques heures. – Ockonal
Super, ça marche! Merci beaucoup. – Ockonal
Le lien MultipartPostHandler est mort –