2017-05-12 1 views
0

Je visite un site Web et je veux télécharger un fichier.python requests télécharger le fichier

j'ai écrit le code en python:

import requests 

url = 'http://example.com' 
files = {'file': open('1.jpg', 'rb')} 
r = requests.post(url, files=files) 
print(r.content) 

Mais il semble qu'aucun fichier a été téléchargé, et la page est le même que celui initial.

Je me demande comment je pourrais télécharger un fichier.

Le code source de cette page:

<html><head><meta charset="utf-8" /></head> 

<body> 
<br><br> 
Upload<br><br> 
<form action="upload.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="hidden" name="dir" value="/uploads/" /> 
<input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

</body> 
</html> 
+0

Btw, vous n'envoyez pas 'dir'. 'r = requests.post (url, files = fichiers, data = {" dir ":"/uploads/"})' – ozgur

+0

@OzgurVatansever J'ai ajouté les données. Mais toujours aucun fichier n'est téléchargé. –

Répondre

1

Quelques points:

  • assurez-vous de soumettre votre demande à l'adresse correcte (la forme « d'action »)
  • utiliser le paramètre data pour soumettre d'autres champs de formulaire (« dir », « soumettre ')
  • comprennent le nom du fichier dans files (facultatif)

Code:

import requests 

url = 'http://example.com' + '/upload.php' 
data = {'dir':'/uploads/', 'submit':'Submit'} 
files = {'file':('1.jpg', open('1.jpg', 'rb'))} 
r = requests.post(url, data=data, files=files) 

print(r.content) 
+0

Merci. Ça fonctionne maintenant. Il semble que j'ai la mauvaise URL pour télécharger le fichier. –

0

Tout d'abord, définir chemin du répertoire de téléchargement comme,

app.config['UPLOAD_FOLDER'] = 'uploads/' 

Définissez ensuite l'extension de fichier qui a permis de télécharger comme,

app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif']) 

Maintenant, supposons que vous appelez la fonction pour traiter le fichier de téléchargement, alors vous devez écrire quelque chose comme s,

# Route that will process the file upload 
@app.route('/upload', methods=['POST']) 
def upload(): 
    # Get the name of the uploaded file 
    file = request.files['file'] 

    # Check if the file is one of the allowed types/extensions 
    if file and allowed_file(file.filename): 
     # Make the filename safe, remove unsupported chars 
     filename = secure_filename(file.filename) 

     # Move the file form the temporal folder to 
     # the upload folder we setup 
     file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) 

     # Redirect the user to the uploaded_file route, which 
     # will basicaly show on the browser the uploaded file 
     return redirect(url_for('YOUR REDIRECT FUNCTION NAME',filename=filename)) 

De cette façon, vous pouvez télécharger votre fichier et le stocker dans votre dossier.

J'espère que cela va vous aider.

Merci.

+0

Merci pour votre réponse. En fait, je viens de visiter le site Web appartenant à d'autres. Je peux télécharger le fichier via mon navigateur, mais je dois trouver un moyen de le télécharger via python. –