Je peux télécharger un fichier avec flask en suivant Téléchargement de fichiers :
<form>
Est marquée avec enctype=multipart/form-data
Et un <input type=file>
Est placé dans ce formulaire.save()
du fichier pour enregistrer le fichier de façon permanente quelque part sur le système de fichiers.Mais je ne sais pas comment télécharger un dossier ou certains fichiers. J'ai cherché et j'ai trouvé Téléchargement de plusieurs fichiers avec Flask .
Cependant, je ne sais toujours pas comment télécharger un dossier et des fichiers qui appartiennent au dossier.
Pourriez-vous s'il vous plaît dire comment?
Arborescence de répertoires sur laquelle je travaille:
.
├── manage.py
├── templates
│ ├── file_upload.html
│ └── hello.html
└── uploads
├── BX6dKK7CUAAakzh.jpg
└── sample.txt
Code source du téléchargement du fichier:
from flask import Flask,abort,render_template,request,redirect,url_for
from werkzeug import secure_filename
import os
app = Flask(__name__)
UPLOAD_FOLDER = './uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def index():
return redirect(url_for('hello'))
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name = None):
return render_template('hello.html',name=name)
@app.route('/upload/',methods = ['GET','POST'])
def upload_file():
if request.method =='POST':
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
return hello()
return render_template('file_upload.html')
if __name__ == '__main__':
app.run(debug = True)
modèle pour le téléchargement de fichiers (manage.py):
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action='' method="POST" enctype="multipart/form-data">
<p><input type='file' name='file[]' multiple=''>
<input type='submit' value='upload'>
</p>
</form>
file = request.files['file']
le changer en
file = request.files['file[]']
le problème ici est que le flacon app.config
n'est pas relatif à lui-même, c'est absolu. donc quand vous mettez:
UPLOAD_FOLDER = './uploads'
flask ne trouve pas ce répertoire et retourne un 500
Erreur. si vous l'avez changé en:
UPLOAD_FOLDER = '/tmp'
puis téléchargé votre fichier et navigué vers le répertoire/tmp/vous le verriez.
vous devrez modifier votre chemin vers le répertoire approprié pour que le fichier soit téléchargé correctement.