Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

upload de fichier à placer dans un repertoire precis ?

2 réponses
Avatar
martin
Bonjour,

J'ai besoin de recuperer un fichier (via un formulaire web) et de le placer
dans un dossier precis.

A chaque fois qu'un fichier arrive :
1. On va lire l'etat du compteur
2. On l'incremente de 1, puis on enregistre la nouvelle valeure du compteur
4. On créer un repertoire, repertoire qui aura pour nom, l'etat du compteur
5. On recupere le fichier et on l'enregistre dans le repertoire nouvellement
créer.


Comment puis je recuperer mon fichier directement dans mon nouveau
repertoire ?


Voici mon CGI

#!python
import os
import cgi

# Declaration des variables
REPERTOIRE="C:\Program Files\dossier_travail"
FICHIER_COMPTEUR="Compteur.ini"

# Definit le nouveau repertoire courant
os.chdir(REPERTOIRE)

# Recuperation du compteur
desc_fic=open(FICHIER_COMPTEUR,"r")
Compteur=int(desc_fic.read())
desc_fic.close()

# On augmente de 1 la valeur du compteur
Compteur=Compteur+1

# On modifie le fichier compteur avec sa nouvelle valeure.
xxxxxxx

# Creation du repetoire
os.mkdir(str(Compteur))

# Ecriture de l'entete <html><body></body></html>
print "Content-Type: text/html"
print

# Recuperation du fichier
form=cgi.FieldStorage()
file_item=form["fichier"]
contenu=file_item.file.read()
f=open("fic","w")
f.write(contenu)
f.close()



Voici mon formulaire (basic).
<html>
<head></head>
<form action=../cgi-bin/monscript.py enctype='multipart/form-data'
method=post>
<input type=file name=fichier>
<input type=submit>
</form>
</html>

2 réponses

Avatar
martin
J'ai modifier mon script et la creation des repertoires fonctionne apresent
!!!
MAIS ! Les fichiers n'arrivent pas en entier, ils sont modifier. pourquoi ??
Par avance merci


Voici le nouveau code

#!python

# On importe les modules
import os
import cgi

# Declaration des variables
REPERTOIRE="C:Program FilesPdf2word"
FICHIER_COMPTEUR="Compteur.ini"

# Definit le nouveau repertoire courant
os.chdir(REPERTOIRE)


# Recuperation du compteur
## open(nomfichier,mode) renvoie un objet de type fichier
## mode vaut
## - r quand le fichier doit etre seulement lu
## - w pour seulement ecrire (un fichier deja existant avec le meme nom sera
efface
## - a ouvre le fichier en ajout ; les donnees ecrites dans le fichier
seront automatiquement ajoutees a la fin
## - r+ ouvre le fichier pour la lecture et l'ecriture.
## - L'argument mode est facultatif ; 'r' sera pris par defaut s'il est
omis.
desc_fic=open(FICHIER_COMPTEUR,"r+")
Compteur=int(desc_fic.read())

# On augmente de 1 la valeur du compteur
Compteur=Compteur+1

# On enregistre la nouvelle valeure du compteur
## f.seek() change la position dans l'objet fichier
## f.seek(0,0) positionne au debut du fichier
desc_fic.seek(0,0)
desc_fic.write(str(Compteur))

# On ferme le fichier
desc_fic.close()

# Creation du repetoire
os.mkdir(str(Compteur))

# On modifie le repertoire courant
os.chdir(REPERTOIRE + '/' + str(Compteur))

# Ecriture de l'entete <html><body></body></html>
print "Content-Type: text/html"
print

# Recuperation du fichier
form=cgi.FieldStorage()

file_item=form["fichierPDF"]
contenu=file_item.file.read()
f=open("fic","w+b")
f.write(contenu)
f.close()







"martin" a écrit dans le message de
news:4251260d$0$13585$
Bonjour,

J'ai besoin de recuperer un fichier (via un formulaire web) et de le
placer

dans un dossier precis.

A chaque fois qu'un fichier arrive :
1. On va lire l'etat du compteur
2. On l'incremente de 1, puis on enregistre la nouvelle valeure du
compteur

4. On créer un repertoire, repertoire qui aura pour nom, l'etat du
compteur

5. On recupere le fichier et on l'enregistre dans le repertoire
nouvellement

créer.


Comment puis je recuperer mon fichier directement dans mon nouveau
repertoire ?


Voici mon CGI

#!python
import os
import cgi

# Declaration des variables
REPERTOIRE="C:Program Filesdossier_travail"
FICHIER_COMPTEUR="Compteur.ini"

# Definit le nouveau repertoire courant
os.chdir(REPERTOIRE)

# Recuperation du compteur
desc_fic=open(FICHIER_COMPTEUR,"r")
Compteur=int(desc_fic.read())
desc_fic.close()

# On augmente de 1 la valeur du compteur
Compteur=Compteur+1

# On modifie le fichier compteur avec sa nouvelle valeure.
xxxxxxx

# Creation du repetoire
os.mkdir(str(Compteur))

# Ecriture de l'entete <html><body></body></html>
print "Content-Type: text/html"
print

# Recuperation du fichier
form=cgi.FieldStorage()
file_item=form["fichier"]
contenu=file_item.file.read()
f=open("fic","w")
f.write(contenu)
f.close()



Voici mon formulaire (basic).
<html>
<head></head>
<form action=../cgi-bin/monscript.py enctype='multipart/form-data'
method=post>
<input type=file name=fichier>
<input type=submit>
</form>
</html>





Avatar
martin
Salut,

J'ai trouver pourkoi :

#!python

# On importe les modules
import cgi
import cgitb; cgitb.enable()
import os, sys
try : # Windows a besoin de stdio pour le mode binaire.
import msvcrt
msvcrt.setmode (0, os.O_BINARY) # stdin = 0
msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
pass

# Declaration des variables
REPERTOIRE="C:Program FilesPdf2word"
FICHIER_COMPTEUR="Compteur.ini"

# Definit le nouveau repertoire courant
os.chdir(REPERTOIRE)


# Recuperation du compteur
## open(nomfichier,mode) renvoie un objet de type fichier
## mode vaut
## - r quand le fichier doit etre seulement lu
## - w pour seulement ecrire (un fichier deja existant avec le meme nom sera
efface
## - a ouvre le fichier en ajout ; les donnees ecrites dans le fichier
seront automatiquement ajoutees a la fin
## - r+ ouvre le fichier pour la lecture et l'ecriture.
## - L'argument mode est facultatif ; 'r' sera pris par defaut s'il est
omis.
desc_fic=open(FICHIER_COMPTEUR,"r+")
Compteur=int(desc_fic.read())

# On augmente de 1 la valeur du compteur
Compteur=Compteur+1

# On enregistre la nouvelle valeure du compteur
## f.seek() change la position dans l'objet fichier
## f.seek(0,0) positionne au debut du fichier
desc_fic.seek(0,0)
desc_fic.write(str(Compteur))

# On ferme le fichier
desc_fic.close()

# Creation du repetoire
os.mkdir(str(Compteur))

# On modifie le repertoire courant
UPLOAD_DIR = REPERTOIRE + '/' + str(Compteur)

# Ecriture de l'entete <html><body></body></html>
print "Content-Type: text/html"
print

# Enregistrement du fichier
def save_uploaded_file (form_field, upload_dir):
form = cgi.FieldStorage()
if not form.has_key(form_field): return
fileitem = form[form_field]
if not fileitem.file: return
fout = file (os.path.join(upload_dir, fileitem.filename), 'wb')
while 1:
chunk = fileitem.file.read(100000)
if not chunk: break
fout.write (chunk)
fout.close()


save_uploaded_file ("fichierPDF", UPLOAD_DIR)









"martin" a écrit dans le message de
news:4251419d$0$13625$
J'ai modifier mon script et la creation des repertoires fonctionne
apresent

!!!
MAIS ! Les fichiers n'arrivent pas en entier, ils sont modifier. pourquoi
??

Par avance merci


Voici le nouveau code

#!python

# On importe les modules
import os
import cgi

# Declaration des variables
REPERTOIRE="C:Program FilesPdf2word"
FICHIER_COMPTEUR="Compteur.ini"

# Definit le nouveau repertoire courant
os.chdir(REPERTOIRE)


# Recuperation du compteur
## open(nomfichier,mode) renvoie un objet de type fichier
## mode vaut
## - r quand le fichier doit etre seulement lu
## - w pour seulement ecrire (un fichier deja existant avec le meme nom
sera

efface
## - a ouvre le fichier en ajout ; les donnees ecrites dans le fichier
seront automatiquement ajoutees a la fin
## - r+ ouvre le fichier pour la lecture et l'ecriture.
## - L'argument mode est facultatif ; 'r' sera pris par defaut s'il est
omis.
desc_fic=open(FICHIER_COMPTEUR,"r+")
Compteur=int(desc_fic.read())

# On augmente de 1 la valeur du compteur
Compteur=Compteur+1

# On enregistre la nouvelle valeure du compteur
## f.seek() change la position dans l'objet fichier
## f.seek(0,0) positionne au debut du fichier
desc_fic.seek(0,0)
desc_fic.write(str(Compteur))

# On ferme le fichier
desc_fic.close()

# Creation du repetoire
os.mkdir(str(Compteur))

# On modifie le repertoire courant
os.chdir(REPERTOIRE + '/' + str(Compteur))

# Ecriture de l'entete <html><body></body></html>
print "Content-Type: text/html"
print

# Recuperation du fichier
form=cgi.FieldStorage()

file_item=form["fichierPDF"]
contenu=file_item.file.read()
f=open("fic","w+b")
f.write(contenu)
f.close()







"martin" a écrit dans le message de
news:4251260d$0$13585$
Bonjour,

J'ai besoin de recuperer un fichier (via un formulaire web) et de le
placer

dans un dossier precis.

A chaque fois qu'un fichier arrive :
1. On va lire l'etat du compteur
2. On l'incremente de 1, puis on enregistre la nouvelle valeure du
compteur

4. On créer un repertoire, repertoire qui aura pour nom, l'etat du
compteur

5. On recupere le fichier et on l'enregistre dans le repertoire
nouvellement

créer.


Comment puis je recuperer mon fichier directement dans mon nouveau
repertoire ?


Voici mon CGI

#!python
import os
import cgi

# Declaration des variables
REPERTOIRE="C:Program Filesdossier_travail"
FICHIER_COMPTEUR="Compteur.ini"

# Definit le nouveau repertoire courant
os.chdir(REPERTOIRE)

# Recuperation du compteur
desc_fic=open(FICHIER_COMPTEUR,"r")
Compteur=int(desc_fic.read())
desc_fic.close()

# On augmente de 1 la valeur du compteur
Compteur=Compteur+1

# On modifie le fichier compteur avec sa nouvelle valeure.
xxxxxxx

# Creation du repetoire
os.mkdir(str(Compteur))

# Ecriture de l'entete <html><body></body></html>
print "Content-Type: text/html"
print

# Recuperation du fichier
form=cgi.FieldStorage()
file_item=form["fichier"]
contenu=file_item.file.read()
f=open("fic","w")
f.write(contenu)
f.close()



Voici mon formulaire (basic).
<html>
<head></head>
<form action=../cgi-bin/monscript.py enctype='multipart/form-data'
method=post>
<input type=file name=fichier>
<input type=submit>
</form>
</html>