Existe-t-il un moyen d'envoyer un fichier en utilisant POST à partir d'un script Python?
python
post
file-upload
http-post
Lecture seulement
la source
la source
with open('report.xls', 'rb') as f: r = requests.post('http://httpbin.org/post', files={'report.xls': f})
place, donc il ferme à nouveau le fichier après ouverture.Oui. Vous utiliseriez le
urllib2
module et encoderiez en utilisant lemultipart/form-data
type de contenu. Voici un exemple de code pour vous aider à démarrer - c'est un peu plus qu'un simple téléchargement de fichiers, mais vous devriez pouvoir le lire et voir comment cela fonctionne:la source
La seule chose qui vous empêche d'utiliser urlopen directement sur un objet fichier est le fait que l'objet fichier intégré n'a pas de définition len . Un moyen simple consiste à créer une sous-classe, qui fournit à urlopen le fichier correct. J'ai également modifié l'en-tête Content-Type dans le fichier ci-dessous.
la source
Il semble que les requêtes python ne gèrent pas les fichiers en plusieurs parties extrêmement volumineux.
La documentation vous recommande d'examiner
requests-toolbelt
.Voici la page pertinente de leur documentation.
la source
La bibliothèque d' affiches de Chris Atlee fonctionne très bien pour cela (en particulier la fonction de commodité
poster.encode.multipart_encode()
). En prime, il prend en charge la diffusion de gros fichiers sans charger un fichier entier en mémoire. Voir aussi le problème Python 3244 .la source
J'essaye de tester django rest api et cela fonctionne pour moi:
la source
close()
un fichier.Vous voudrez peut-être aussi jeter un œil à httplib2 , avec des exemples . Je trouve que l'utilisation de httplib2 est plus concise que l'utilisation des modules HTTP intégrés.
la source
requests
plutôt.la source