在现代Web应用中,文件上传功能是一个常见的需求。Flask作为一个轻量级的Python Web框架,提供了简单易用的接口来实现文件上传功能。在本文中,我们将创建一个基本的Flask应用,来演示如何实现文件上传。

环境准备

首先,确保你已安装Flask。如果还没有安装,可以通过以下命令安装:

pip install Flask

创建Flask应用

接下来,我们来创建一个简单的Flask应用。以下是文件结构的示例:

/flask_file_upload
    /uploads
    app.py
    templates/
        upload.html

在这个结构中,uploads文件夹用于存放上传的文件,app.py是Flask应用的主文件,templates/upload.html是用于文件上传的HTML模板。

代码实现

1. 主文件 app.py

以下是app.py的代码,它实现了文件上传功能:

from flask import Flask, request, render_template, redirect, url_for
import os

app = Flask(__name__)
# 设置上传文件的保存路径
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
# 仅允许上传的文件扩展名
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}

# 检查文件扩展名
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/')
def index():
    return render_template('upload.html')

@app.route('/upload', methods=['POST'])
def upload_file():
    # 检查是否有文件上传
    if 'file' not in request.files:
        return redirect(request.url)
    file = request.files['file']

    # 如果用户没有选择文件,浏览器也会提交一个空的文件名
    if file.filename == '':
        return redirect(request.url)

    # 检查文件扩展名
    if file and allowed_file(file.filename):
        filename = file.filename
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return '文件上传成功:{}'.format(filename)

    return '不支持的文件类型!'

if __name__ == '__main__':
    if not os.path.exists(UPLOAD_FOLDER):
        os.makedirs(UPLOAD_FOLDER)
    app.run(debug=True)

2. HTML模板 templates/upload.html

接下来我们来编写上传文件的HTML模板。以下是upload.html的代码:

<!doctype html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>文件上传</title>
</head>
<body>
    <h1>上传文件</h1>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="上传">
    </form>
</body>
</html>

运行应用

在终端中,导航到应用目录并运行app.py

python app.py

打开浏览器,访问http://127.0.0.1:5000/,你将看到一个文件上传的界面。选择一个文件后点击“上传”按钮,成功上传后,将会显示上传的文件名。

总结

在本文中,我们创建了一个简单的Flask文件上传应用。这个应用支持基本的文件上传功能,并对文件类型进行了简单的验证。在实际应用中,你可能还需要增加更多的功能,如文件大小限制、用户身份验证、上传文件名的处理、用户友好的错误提示等。希望通过本示例,你能更加熟悉Flask的文件处理功能,能够在未来的项目中加以应用。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部