Hello, du coup j’ai un soucis qui m’a fait perdre pas mal de temps aujourd’hui. Je souhaite uploader des fichiers automatiquement via le module requests.
J’ai essayé de tourner le code dans tous les sens sans arriver a faire ce que je veux. Je parvient à upload un fichier via un naviguateur mais pas via mon script client qui utilise requests
En suivant des forums j’ai essayer pas mal de choses, notamment d’upload sur https://httpbin.org/post plutôt que sur mon serveur, ça fonctionne sur httpbin… Mais pas sur mon serveur alors voilà je vous présente un échantillons de mon code, qui me pose soucis:
Pour le server:
#!/usr/bin/env python3
from cheroot import wsgi
from cheroot.ssl.builtin import BuiltinSSLAdapter
from beaker.middleware import SessionMiddleware
from bottle import (
route,
response,
run,
redirect,
request,
static_file,
ServerAdapter,
default_app,
)
import os
os.system("mkdir downloaded")
@route("/upload1")
def upload1():
return("\
<form method='post' action='/upload' enctype='multipart/form-data'>\
<input type='file' name='newfile'>\
<input type='submit' value='Submit'>\
</form>")
@route('/upload', method="POST")
def upload():
print("bup")
# get the 'newfile' field from the form
newfile = request.files.get('newfile')
print(newfile)
save_path = os.path.join("downloaded", newfile.filename)
newfile.save(save_path)
return "ok"
if __name__ == "__main__":
run(app=default_app(), host="0.0.0.0", port=80, debug=True, reloader=True)
Pour le client :
#!/usr/bin/env python3
import requests
os.system("echo 'blablabla' >> test.txt")
with open("test.txt","rb") as f:
r = requests.post("http://localhost/upload", data=f.read())
print(r)
Voilà l’erreur en elle même, lors du premier Bup j’utilise mon client pour envoyer le fichier file.txt (echec) lors du second bup j’utilise mon naviguateur pour upload le fichier (ok):
Merci d’avance. Je suis disponible en vocal sur discord si quelqu’un à envie de m’aider.