欢迎访问宙启技术站
智能推送

详解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"属性指定表单为文件上传表单。