在 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>
您将看到如下所示的界面。
选择文件后,单击提交。
表单的 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 前面不能加“/”。
上传成功会显示以下画面:
上次文件被放到根目录的 upload 文件夹下:
基于web的应用程序通常需要具有向用户/客户端发送邮件的功能。Flask-Mail扩展使得与任何电子邮件服务器建立简单的接口变得非常容...
ALLOWED_HOSTS 配置在运行测试时被验证。这允许测试客户端区分内部和外部 URL。支持多租户或根据请求的主机改变业务逻辑的项...
Java Swing教程 -Java Swing JProgressBarJProgressBar用于显示任务的进度。它有一个方向,可以是水平或垂直。JProgressBar有三...
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢!『 与其纠结,不如行动学习。Innovate ,And o...
注意版本要求:3.4.0版本以上MybatisPlusInterceptor该插件是核心插件,目前代理了Executor#query和Executor#update和S...
resultMap元素是MyBatis中最重要最强大的元素。它可以让你从90%的JDBCResultSets数据提取代码中解放出来,并在一些情形下...
映射类型当你准备一个 Hibernate 映射文件时,我们已经看到你把 Java 数据类型映射到了 RDBMS 数据格式。在映射文件中已经声明被...
一、运行环境: 1、操作系统:windows 10 x64 2、eclipse版本: Version: 2019-06 (4.12.0) Build id: 20190614-1200 3、Web服务...
让我们使用 Spring 框架开始实际的编程。在你开始使用 Spring 框架编写第一个例子之前,你必须确保已经正确地设置了 Spring 环境...
Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系。 什么是依赖注入每个基于应用程序的 java 都有几个...