Problème input type="file" [python][html] [Résolu/Fermé]

Signaler
Messages postés
45
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
6 décembre 2012
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
Bonjour,


j'aurai besoin de votre aimable aide pour résoudre un problème que je n'arrive pas à régler par mes propres moyens. Je réclame donc votre aide


Le code suivant me permet de transmettre un fichier vers ma page decodeur.py :

<form method="post" action="cgi-bin/decodeur.py" >

			<p> Add a file </p>
	
			<input type="file" name="file" />
 
			<input type="submit" value="Send" />


après dans mon fichier decodeur.py je ne sais pas comment faire pour lire ce fichier qui m'a été transmis
d'habitude je fais :
 file = open ('monfichier.txt','w')


Quelqu'un aurait-il une idée s'il vous plait ?

2 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 688
Pour récupérer le fichier uploadé, en python :
import cgi
form=cgi.FieldStorage()
file = form['myfile'].value
Messages postés
45
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
6 décembre 2012

Merci mais j'ai déjà essayé mais ça marche pas :/
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 688
Ca nous aiderait plus si tu disais précisément ce qui ne marche pas...
Messages postés
195
Date d'inscription
dimanche 13 mai 2012
Statut
Contributeur
Dernière intervention
28 août 2012
34
Salut,

Est-ce que tu lances ton script à partir du terminal ou la fenêtre MS-DOS (si tu es sous w$) ?, si oui quelles erreurs récupères-tu dans le terminal ou la fenêtre MS-DOS ? (les traceback).

As-tu laissé des print qque chose un peu partout dans ton code pour le débogage ?

> après dans mon fichier decodeur.py je ne sais pas comment faire pour lire ce
> fichier qui m'a été transmis
> d'habitude je fais :

> file = open ('monfichier.txt','w')

Là tu ecris (write), tu ne le lis pas ... si tu veux lire ...

file = open ('monfichier.txt', 'rb') 
liste = file.readlines() 
for lignes in liste: print lignes


a+


Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 688
Non mais ce n'est pas avec open pour récupérer le fichier envoyé via html.
Il faut utiliser ce que je t'ai donné. Par contre à toi de dire ce qui marche pas...
Messages postés
45
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
6 décembre 2012

moi aussi j'avais essayé comme tu m'avais dis avant
if form.has_key("file"):
txt = form["file"].value
après j'ouvre un fichier et je met la valeur txt dedans 
f = open('file.txt','w')
f.write(txt )
f.close

Et quand je vais dans le fichier file.txt j'ai que le nom du fichier uploader :s et donc pas de message d'erreur pour débugger ...
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 688
Alors dis-nous ce qui te fait dire que ça marche pas ?
Je comprends plus trop ton problème en fait. Tu récupères un fichier et au lieu de le lire tu écris dedans.
Messages postés
45
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
6 décembre 2012

En fait je veux faire plein de trucs sur le fichier que je récupère (REGEX,CSS ...) sauf que ce fichier récupérer je connais ni son nom ni son extension ( c'est un utilisateur qui l'Upload)
C'est pour cela que je crée un nouveau fichier "file.txt" et je met le contenu du fichier récupérer dedans pour me faciliter la tache
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 688
Ok.
Essaie :
import cgi 

print "Content-Type: text/html" 
print 

form=cgi.FieldStorage() 

f=open("fichier.txt","w") 
data=form["file"].value 
f.write(data) 
f.close() 
print data