Flask 文件上传

在 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_LENGTH] 指定要上传的文件的最大大小(以字节为单位)

以下代码具有 ​/upload ​URL 规则,该规则在 templates 文件夹中显示​ upload.html​,以及 ​/upload-file ​URL 规则,用于调用 ​uploader() ​函数处理上传过程。

upload.html ​有一个文件选择器按钮和一个提交按钮。

<html>
<head>
  <title>File Upload</title>
</head>
<body>
    <form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data">
        <input type="file" name="file"  />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

您将看到如下所示的界面。

Flask 文件上传

选择文件后,单击提交。

表单的​ post ​方法调用​ /upload_file​ URL。

底层函数 ​uploader()​ 执行保存操作。 

以下是 Flask 应用程序的 Python 代码。

from flask import Flask, render_template, request

from werkzeug.utils import secure_filename

import os app = Flask(__name__) app.config[UPLOAD_FOLDER] = upload/ @app.route(/upload) def upload_file():     return render_template(upload.html) @app.route(/uploader,methods=[GET,POST]) def uploader():     if request.method == POST:         f = request.files[file]
        print(request.files)

        f.save(os.path.join(app.config[UPLOAD_FOLDER], secure_filename(f.filename)))

        return file uploaded successfully

    else:

        return render_template(upload.html)

if __name__ == __main__: app.run(debug=True)

注意:app.config[UPLOAD_FOLDER] = upload/

upload 前面不能加“/”。 

上传成功会显示以下画面:

Flask 文件上传

上次文件被放到根目录的 upload 文件夹下:

Flask 文件上传

作者:andy,如若转载,请注明出处:https://www.web176.com/flask/20489.html

(0)
打赏 支付宝 支付宝 微信 微信
andy的头像andy
上一篇 2023年5月16日
下一篇 2023年5月16日

相关推荐

发表回复

登录后才能评论