Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 53 lines (39 sloc) 1.98 kb
4483457 add french translation
nux authored
1 ---
2 layout: default
3 title: Stocker un fichier uploadé
4 ---
5
6 # Stocker un fichier uploadé
7
8 Autre langages: [english](/../storeupload) | ...
9
10 ## Problème
11
12 Vous voulez uploader un fichier et le stocker dans un dossier prédéfini.
13
14 ## Solution
15
16 import web
17
18 urls = ('/upload', 'Upload')
19
20 class Upload:
21 def GET(self):
22 web.header("Content-Type","text/html; charset=utf-8")
23 return """<html><head></head><body>
24 <form method="POST" enctype="multipart/form-data" action="">
25 <input type="file" name="myfile" />
26 <br/>
27 <input type="submit" />
28 </form>
29 </body></html>"""
30
31 def POST(self):
32 x = web.input(myfile={})
33 filedir = '/path/where/you/want/to/save' # modifiez ceci pour le répertoire dans lequel vous voulez stocker le fichier.
34 if 'myfile' in x: # pour vérifier si le l'objet fichier est créé.
35 filepath=x.myfile.filename.replace('\\','/') # Remplace les "slashs" de type windows par ceux de linux.
36 filename=filepath.split('/')[-1] # scinde et choisit la dernière partie (le nom du fichier avec l'extension)
37 fout = open(filedir +'/'+ filename,'w') # crée le fichier où le fichier téléchargé doit être stocké
38 fout.write(x.myfile.file.read()) # écrit le fichier téléchargé vers le fichier nouvellement créé.
39 fout.close() # clôt le fichier, upload terminé.
40 raise web.seeother('/upload')
41
42
43 if __name__ == "__main__":
44 app = web.application(urls, globals())
45 app.run()
46
47 ## A savoir
48
49 Deux petites choses à surveiller:
50
cc9962f edit
nux authored
51 * Voir [Uploader un fichier](/../fileupload/fr).
4483457 add french translation
nux authored
52 * Ne pas mettre le fichier dans un dossier qui est exécutable sans vérification de l'extension et du type de fichier.
53 * En fait, nous avons besoin d'ouvrir l'objet fichier 'fout' en mode "wb" (sous Windows) *mode d'écriture binaire, sinon l'image uploadée est cassée.*
Something went wrong with that request. Please try again.