[Http.server]Upload fichier

Fermé
Kooitfeet78730 Messages postés 11 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 1 novembre 2020 - 4 oct. 2020 à 18:23
Kooitfeet78730 Messages postés 11 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 1 novembre 2020 - 1 nov. 2020 à 23:43
Bonjour à tous,
je me permet de créer ce forum car je me trouve dans une impasse.
J'ai créé un serveur python à l'aide du module Http.serveur. Sur ce serveur, ma première page HTML demande à l'utilisateur d'entrer un fichier Excel.
Lorsque que mon site-web est exécuté depuis l'ordinateur où est logé le serveur, le transfert de fichier se fait parfaitement.
Mais lorsque j'accède à mon site depuis un autre ordinateur connecter au même wifi, le fichier est bien envoyé au serveur mais le fichier est corrompu est sa taille diminue (de 105Ko à 40Ko).

J'aimerai savoir s'il y a un soucis avec mon serveur ou mon code, ou bien s'il faut le paramétrer afin qu'il accepte les fichiers plus lourd.

Je vous remercie par avance de votre attention.

Bonne Journée à tous.

PS : je suis étudiant ingénieurs et donc débutant dans ce langage.

Voici quelques photos de mon programme :

Serveur :


Index :


Upload :
A voir également:

5 réponses

yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
4 oct. 2020 à 18:26
bonjour, au lieu de partager des images de ton code, peux-tu partager le texte source, en utilisant les balises de code?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Kooitfeet78730 Messages postés 11 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 1 novembre 2020
4 oct. 2020 à 19:02
Rebonjour,
Pas de soucis
voici mon code :

Serveur :
#coding : utf-8
import http.server


PORT = 80
address = ("0.0.0.0", PORT)

server = http.server.HTTPServer

handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["/"]

httpd = server(address, handler)


print ("Serveur actif sur le port :", PORT)



httpd.serve_forever()


Index :
#coding: utf-8

import os
try :
    os.mkdir('Corbeille')
except :
    a=2
print("Content-type: text/html; charset=utf-8\n")
html ="""<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>Outils de matching</title>
</head>
<body>
    <p>Veuillez selectionner le fichier candidat.</p> 
    <form action=upload_candidat.py method="POST" enctype="multipart/form-data">
        <input type="file" name="filename" accept=".xlsx">
        <input type="submit">
</body>
</html>
"""

print(html)



Upload :

import cgi
import cgitb
import os


print("Content-type: text/html; charset=utf-8\n")

form = cgi.FieldStorage()
cgitb.enable()

fileitem = form['filename']

if fileitem.filename:
    fn = os.path.basename(fileitem.filename)
    open(fn, 'wb').write(fileitem.file.read())
else :
    print("error")


Merci de votre attention.
0
yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
5 oct. 2020 à 16:46
j'ai fait plusieurs tests, avec plusieurs adaptations du code.
je ne parviens pas à éliminer le problème. je l'obtiens également parfois en travaillant en local.
il me semble que le code ne traite ou ne reçoive que le début du fichier. je n'obtiens pas toujours le même comportement, la longueur reçue varie.
j'ai ajouté des délais, et lu le fichier en petits morceaux, sans succés.

j'ai l'impression que ces modules python ne fonctionnent pas bien, peut-être incompatibles avec windows 10.
0
Kooitfeet78730 Messages postés 11 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 1 novembre 2020
5 oct. 2020 à 19:42
Merci de vos testes,
Pensez-vous que si le code est lancé sur une carte rasberry PI cela pourrait-être resoudre le problèmes ?
0
yg_be Messages postés 22728 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
5 oct. 2020 à 19:48
aucune idée, mais si nous testions tous les deux sur windows, cela vaut la peine d'essayer ailleurs.
0
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
6 oct. 2020 à 18:46
Bonjour, je viens de tester votre code sur un rasberry pi et ça fonctionne parfaitement (testé avec un fichier de 100ko).
Il y a peut-être une différence entre Windows et Linux mais je n'ai pas pu comparer car je n'ai pas de système Windows sous la main.

PS : J'ai seulement eu quelques difficultés à l'exécuter au début car il faut ajouter
#!/usr/bin/python3
au début des fichiers index.py et upload_candidat.py sour les systèmes UNIX. Ça vous évitera de perdre du temps comme moi ;)
0
Kooitfeet78730 Messages postés 11 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 1 novembre 2020 > quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024
6 oct. 2020 à 22:55
C'est noté je vais ajouter cette ligne à mon code et ça va me faire gagner beaucoup de temps ;)

Si cela marche parfaitement sur la carte rasberry mon soucis devrait-être résolue.

Merci à vous d'avoir consacré du temps à mon soucis.

Bonne soirée à vous.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kooitfeet78730 Messages postés 11 Date d'inscription vendredi 3 juillet 2020 Statut Membre Dernière intervention 1 novembre 2020
Modifié le 1 nov. 2020 à 23:49
Bonsoir,
je reviens vers vous car après plusieurs testes sur mon raspberry celui-ci m'affiche le code source de mon fichier index.py malgré la ligne que vous m'avez conseillé de rajouter au tout début de mon fichier.
J'ai installé la dernière version de Raspberry Pi OS lite.

Savez-vous si je dois rajouter quelque chose d'autre ?

Merci de votre attention et bonne soirée à tous
0