upload de fichier à placer dans un repertoire precis ?
2 réponses
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()
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
# 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
# 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" <martin@noemail.com> a écrit dans le message de
news:4251419d$0$13625$636a15ce@news.free.fr...
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
# 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