Flask 文件服务器
Flask 是一个轻量级的 Python Web 框架,可以用来快速构建 Web 应用程序。在本文中,我将介绍如何使用 Flask 搭建一个简单的文件服务器,实现文件的上传和下载功能。
准备工作
在开始之前,我们需要安装 Flask 和 Flask-WTF(用于处理表单)这两个库。可以使用以下命令安装:
pip install Flask Flask-WTF
创建 Flask 应用
首先,新建一个名为 app.py
的 Python 文件,并输入以下代码:
from flask import Flask, render_template, request, send_from_directory
from flask_wtf import FlaskForm
from wtforms import FileField
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
class UploadForm(FlaskForm):
file = FileField('File')
@app.route('/', methods=['GET', 'POST'])
def index():
form = UploadForm()
if form.validate_on_submit():
f = form.file.data
filename = f.filename
f.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return 'File uploaded successfully!'
return render_template('index.html', form=form)
@app.route('/uploads/<filename>')
def download_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)
if __name__ == '__main__':
app.run(debug=True)
在这段代码中,我们创建了一个名为 app
的 Flask 应用,并配置了一个上传文件夹 uploads
。我们还定义了一个简单的表单 UploadForm
,用于上传文件。在 /
路由中,我们首先实例化表单对象,并在提交表单时保存上传的文件到指定文件夹中。而在 /uploads/<filename>
路由中,我们实现了文件下载功能。
创建模板文件
在同级目录下创建一个名为 templates
的文件夹,并在其中创建一个名为 index.html
的模板文件,输入以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload</title>
</head>
<body>
<h1>File Upload</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.csrf_token }}
{{ form.file.label }} {{ form.file }}
<input type="submit" value="Upload">
</form>
</body>
</html>
这是一个简单的 HTML 表单,用于上传文件。我们使用 Flask-WTF 提供的表单对象 form
来生成表单元素,并在提交时上传文件。
运行应用
现在,我们可以运行应用了。在命令行中执行以下命令:
python app.py
然后在浏览器中访问 http://127.0.0.1:5000/
,即可看到文件上传页面。上传一个文件后,便可在 uploads
文件夹中找到该文件,并点击链接下载。
结束语
通过本文的介绍,我们学会了如何使用 Flask 搭建一个简单的文件服务器,实现文件的上传和下载功能。当然,这只是一个起点,你可以根据自己的需求进一步完善这个文件服务器,添加更多功能和优化用户体验。