Existe-t-il un moyen de recevoir plusieurs fichiers téléchargés avec Flask? J'ai essayé ce qui suit:
<form method="POST" enctype="multipart/form-data" action="/upload">
<input type="file" name="file[]" multiple="">
<input type="submit" value="add">
</form>
Et puis imprimé le contenu de request.files['file']
:
@app.route('/upload', methods=['POST'])
def upload():
if not _upload_dir:
raise ValueError('Uploads are disabled.')
uploaded_file = flask.request.files['file']
print uploaded_file
media.add_for_upload(uploaded_file, _upload_dir)
return flask.redirect(flask.url_for('_main'))
Si je télécharge plusieurs fichiers, il imprime uniquement le premier fichier de l'ensemble:
<FileStorage: u'test_file.mp3' ('audio/mp3')>
Existe-t-il un moyen de recevoir plusieurs fichiers en utilisant la gestion de téléchargement intégrée de Flask? Merci pour toute aide!
Vous pouvez utiliser la méthode getlist of flask.request.files , par exemple:
@app.route("/upload", methods=["POST"])
def upload():
uploaded_files = flask.request.files.getlist("file[]")
print uploaded_files
return ""
Utilisation de Flask 1.0.2:
files = request.files.getlist("images")
Où images
est la clé de la paire clé/valeur. La valeur étant les images multiples.
ceci est une solution de travail pour flask version '1.0.2':
images = request.files.to_dict() #convert multidict to dict
for image in images: #image will be the key
print(images[image]) #this line will print value for the image key
file_name = images[image].filename
images[image].save(some_destination)
en gros, images [image] a un fichier image avec une fonction de sauvegarde qui lui est ajoutée. Faites maintenant ce que vous voulez faire avec les données.
@app.route('/upload', methods=['GET','POST'])
def upload():
if flask.request.method == "POST":
files = flask.request.files.getlist("file")
for file in files:
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
Ça marche pour moi.
pour UPLOAD_FOLDER si vous avez besoin d'ajouter ceci juste après app = flask.Flask (name)
UPLOAD_FOLDER = 'static/upload'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER