文件上传是将二进制或普通文件传输到服务器的过程。 Flask使我们可以轻松地上传文件。我们需要拥有一个HTML表单, 并将加密设置为multipart / form-data。
服务器端flask脚本使用request.files [] Object从请求对象中获取文件。成功上传文件后, 该文件将保存到服务器上的所需位置。
上载的文件会保存到服务器的临时目录一段时间, 然后再保存到所需的位置。可以使用以下语法获取目标文件的名称。
name = request.files['file'].filename
但是, 我们可以提到要将文件上传到服务器的文件夹的路径以及上传文件的最大大小。所有这些都可以在flask对象的配置设置中完成。
SN | Syntax | Description |
---|---|---|
1 | app.config[‘UPLOAD_FOLDER’] | 它用于提及上载文件夹。 |
2 | app.config[‘MAX_CONTENT-PATH’] | 它用来表示要上传的文件的最大大小。 |
考虑以下示例, 将文件从本地文件系统上载到服务器。
例子
在此示例中, 我们将向用户提供文件选择器(file_upload_form.html), 用户可以在其中选择文件系统中的文件并将其提交给服务器。
在服务器端, 使用request.files [‘file’]对象获取文件, 并将其保存到服务器上的位置。
由于我们在同一设备上使用开发服务器, 因此文件将被上传到执行flask脚本upload.py的目录中。
upload.py
from flask import *
app = Flask(__name__)
@app.route('/')
def upload():
return render_template("file_upload_form.html")
@app.route('/success', methods = ['POST'])
def success():
if request.method == 'POST':
f = request.files['file']
f.save(f.filename)
return render_template("success.html", name = f.filename)
if __name__ == '__main__':
app.run(debug = True)
file_upload_form.html
<html>
<head>
<title>upload</title>
</head>
<body>
<form action = "/success" method = "post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type = "submit" value="Upload">
</form>
</body>
</html>
success.html
<html>
<head>
<title>success</title>
</head>
<body>
<p>File uploaded successfully</p>
<p>File Name: {{name}}</p>
</body>
</html>
将向用户显示一个HTML表单, 以便用户可以浏览文件系统以查找将被上载到开发服务器的文件。
在这里, 用户选择了一个名为galexy.jpg的文件, 该文件将被上传到服务器。
下面的快照是为URL localhost:5000 / success生成的。成功上传文件后, 会向用户显示一条成功消息, 其中包含上传文件的名称。
我们可以通过检查下图所示的upload.py所在的目录来确认这一点。
评论前必须登录!
注册