本文实例讲述了Python使用Flask框架同时上传多个文件的方法,分享给大家供大家参考。具体如下:
下面的演示代码带有详细的html页面和python代码
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 uploaded from flask import Flask, render_template, request, redirect, url_for, send_from_directory from werkzeug import secure_filename # Initialize the Flask application app = Flask(__name__) # This is the path to the upload directory app.config[\'UPLOAD_FOLDER\'] = \'uploads/\' # These are the extension that we are accepting to be uploaded app.config[\'ALLOWED_EXTENSIONS\'] = set([\'txt\', \'pdf\', \'png\', \'jpg\', \'jpeg\', \'gif\']) # For a given file, return whether it\'s an allowed type or not def 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代码
How To Upload a File.
upload.html页面:
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)
希望本文所述对大家的Python程序设计有所帮助。