时间:2021-07-01 10:21:17 帮助过:54人阅读
下面的演示代码带有详细的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/<filename>')
- 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
- )</filename>
index.html代码
- <div class="container">
- <div class="header">
- <h3 class="text-muted">How To Upload a File.</h3>
- </div>
- <hr>
- <div>
- </div>
- </div>
upload.html页面:
- <div class="container">
- <div class="header">
- <h3 class="text-muted">Uploaded files</h3>
- </div>
- <hr>
- <div>
- This is a list of the files you just uploaded, click on them to load/download them
- <ul>
- {% for file in filenames %}
- <li>{{file}}</li>
- {% endfor %}
- </ul>
- </div>
- <div class="header">
- <h3 class="text-muted">Code to manage a Upload</h3>
- </div>
- <hr>
- <pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>@app.route('/upload', methods=['POST'])</li><li>def upload():</li><li> # Get the name of the uploaded file</li><li> #file = request.files['file']</li><li> uploaded_files = request.files.getlist("file[]")</li><li> filenames = []</li><li> for file in uploaded_files:</li><li> # Check if the file is one of the allowed types/extensions</li><li> if file and allowed_file(file.filename):</li><li> # Make the filename safe, remove unsupported chars</li><li> filename = secure_filename(file.filename)</li><li> # Move the file form the temporal folder to the upload</li><li> # folder we setup</li><li> file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))</li><li> filenames.append(filename)</li><li> # Redirect the user to the uploaded_file route, which</li><li> # will basicaly show on the browser the uploaded file</li><li> # Load an html page with a link to each uploaded file</li><li> return render_template('upload.html', filenames=filenames)</li><li></li></ol></pre>
- </div>
希望本文所述对大家的Python程序设计有所帮助。