This article describes how to use the Flask framework to upload multiple files simultaneously in Python. The example shows how to use the Flask framework in Python to perform file upload, for more information about how to upload multiple files simultaneously using the Flask framework in Python, see the following example. The details are as follows:
The demo code below contains detailed html pages and python code
import os# We'll render HTML templates and access data sent by POST# using the request object from flask. Redirect and url_for# will be used to redirect the user once the upload is done# and send_from_directory will help us to send/show on the# browser the file that the user just uploadedfrom flask import Flask, render_template, request, redirect, url_for, send_from_directoryfrom werkzeug import secure_filename# Initialize the Flask applicationapp = Flask(__name__)# This is the path to the upload directoryapp.config['UPLOAD_FOLDER'] = 'uploads/'# These are the extension that we are accepting to be uploadedapp.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])# For a given file, return whether it's an allowed type or notdef allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS']# This route will show a form to perform an AJAX request# jQuery is loaded to execute the request and update the# value of the operation@app.route('/')def index(): return render_template('index.html')# Route that will process the file upload@app.route('/upload', methods=['POST'])def upload(): # Get the name of the uploaded files uploaded_files = request.files.getlist("file[]") filenames = [] for file in uploaded_files: # Check if the file is one of the allowed types/extensions if file and allowed_file(file.filename): # Make the filename safe, remove unsupported chars filename = secure_filename(file.filename) # Move the file form the temporal folder to the upload # folder we setup file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename)) # Save the filename into a list, we'll use it later filenames.append(filename) # Redirect the user to the uploaded_file route, which # will basicaly show on the browser the uploaded file # Load an html page with a link to each uploaded file return render_template('upload.html', filenames=filenames) # This route is expecting a parameter containing the name# of a file. Then it will locate that file on the upload# directory and show it on the browser, so if the user uploads# an image, that image is going to be show after the upload@app.route('/uploads/
')def uploaded_file(filename): return send_from_directory(app.config['UPLOAD_FOLDER'], filename)if __name__ == '__main__': app.run( host="0.0.0.0", port=int("80"), debug=True )
Index.html code
How To Upload a File.
Upload.html page:
Uploaded files
This is a list of the files you just uploaded, click on them to load/download them
{% for file in filenames %}
- {{file}}
{% endfor %}
Code to manage a Upload
@app.route('/upload', methods=['POST'])def upload(): # Get the name of the uploaded file #file = request.files['file'] uploaded_files = request.files.getlist("file[]") filenames = [] for file in uploaded_files: # Check if the file is one of the allowed types/extensions if file and allowed_file(file.filename): # Make the filename safe, remove unsupported chars filename = secure_filename(file.filename) # Move the file form the temporal folder to the upload # folder we setup file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) filenames.append(filename) # Redirect the user to the uploaded_file route, which # will basicaly show on the browser the uploaded file # Load an html page with a link to each uploaded file return render_template('upload.html', filenames=filenames)
I hope this article will help you with Python programming.