在Flask中处理文件上传非常简单.它需要一个HTML表单,其enctype属性设置为'multipart/form-data',将文件发布到URL. URL处理程序从 request.files [] 对象中提取文件并将其保存到所需位置.
每个上传的文件首先保存在临时位置服务器,在它实际保存到其最终位置之前.目标文件的名称可以是硬编码的,也可以从 request.files [file] 对象的filename属性中获取.但是,建议使用 secure_filename()函数获取它的安全版本.
可以定义默认上传文件夹的路径和最大值Flask对象配置设置中上传文件的大小.
app.config ['UPLOAD_FOLDER '] | 定义上传文件夹的路径 |
app.config ['MAX_CONTENT_PATH'] | 指定要上传的文件的最大大小 - 以字节为单位 |
以下代码包含'/upload'网址规则,该规则在templates文件夹中显示'upload.html',并且'/upload-file'调用 uploader()函数处理上传过程的网址规则.
'upload.html'有一个文件选择器按钮和一个提交按钮.
您将看到如下所示的屏幕.
选择文件后点击提交. Form的post方法调用'/upload_file' URL.底层函数 uploader()执行保存操作.
以下是Flask应用程序的Python代码.
from flask import Flask, render_template, requestfrom werkzeug import secure_filenameapp = Flask(__name__)@app.route('/upload')def upload_file(): return render_template('upload.html')@app.route('/uploader', methods = ['GET', 'POST'])def upload_file(): if request.method == 'POST': f = request.files['file'] f.save(secure_filename(f.filename)) return 'file uploaded successfully'if __name__ == '__main__': app.run(debug = True)