开发手册 欢迎您!
软件开发者资料库

Flask - 文件上传

Flask文件上传 - 从简单和简单的步骤学习Flask,从基本到高级概念,包括概述,环境,应用程序,路由,变量规则,URL构建,HTTP方法,模板,静态文件,请求对象,将表单数据发送到模板,Cookie,会话,重定向和错误,消息闪烁,文件上传,扩展,邮件,WTF,SQLite,SQLAlchemy,Sijax,部署,FastCGI。

在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'有一个文件选择器按钮和一个提交按钮.

                                    

您将看到如下所示的屏幕.

Flask文件上传

选择文件后点击提交. 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)