Flask 文件服务器

Flask 文件服务器

Flask 文件服务器

Flask 是一个轻量级的 Python Web 框架,可以用来快速构建 Web 应用程序。在本文中,我将介绍如何使用 Flask 搭建一个简单的文件服务器,实现文件的上传和下载功能。

准备工作

在开始之前,我们需要安装 Flask 和 Flask-WTF(用于处理表单)这两个库。可以使用以下命令安装:

pip install Flask Flask-WTF

创建 Flask 应用

首先,新建一个名为 app.pyPython 文件,并输入以下代码:

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 搭建一个简单的文件服务器,实现文件的上传和下载功能。当然,这只是一个起点,你可以根据自己的需求进一步完善这个文件服务器,添加更多功能和优化用户体验。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程