详解Python中的Form()函数用于文件上传的功能
发布时间:2023-12-27 06:48:09
Form()是Flask框架中的一个类,用于创建包含文件上传功能的表单。
使用Form()函数需要导入Flask模块中的Flask、render_template和request类:
from flask import Flask, render_template, request
首先,需要创建一个Flask应用:
app = Flask(__name__)
然后定义一个路由,用于处理GET和POST请求,并返回包含文件上传表单的HTML页面:
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
# 处理文件上传逻辑
file = request.files['file']
# 处理文件保存逻辑
file.save('uploads/' + file.filename)
return '文件上传成功!'
return render_template('upload.html')
在GET请求时,直接返回upload.html页面;在POST请求时,处理请求中的文件,并保存到指定目录。上传表单中的文件字段名为'file',可以根据实际需求进行修改。
最后,需要在表单页面upload.html中添加文件上传表单:
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传示例</h1>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
在表单中,需要指定form的method为POST,enctype为multipart/form-data,这样才能正确处理文件上传。
启动Flask应用:
if __name__ == '__main__':
app.run()
当用户访问应用的根路径时,会显示文件上传页面。用户选择文件并点击上传按钮后,会向服务器发送POST请求,文件会被保存到指定目录中。
需要注意的是,Flask在接收文件时会将文件内容存储在内存中,如果文件比较大,可能会导致内存占用过高。为了避免这个问题,可以设置Flask的配置项MAX_CONTENT_LENGTH,限制上传文件的大小:
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 限制文件大小为16MB
这样,如果用户上传文件大小超过16MB,Flask会返回一个413错误(Request Entity Too Large)。
综上所述,Form()函数用于创建文件上传表单,通过request.files来获取上传的文件,通过file.save()方法将文件保存到指定目录中,可以使用enctype="multipart/form-data"属性指定表单为文件上传表单。
