python3 flask实现文件上传功能

yizhihongxing

下面我将为你详细讲解“Python3 Flask 实现文件上传功能”的完整攻略。

1. 确定上传文件的保存路径

在 Flask 中,我们可以通过设置 app.config 来确定上传文件的保存路径。一般来说,我们建议将上传文件保存在外部的文件夹中,而不要与 Flask 应用程序的代码混淆。

下面是一个设置上传文件保存路径的代码示例:

import os
from flask import Flask, request, redirect, url_for
from werkzeug.utils import secure_filename

app = Flask(__name__)

# 设置上传文件保存路径
app.config['UPLOAD_FOLDER'] = '/path/to/uploads'
app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS']

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return redirect(url_for('uploaded_file',
                                    filename=filename))
    return '''
    <!doctype html>
    <title>文件上传</title>
    <h1>上传文件</h1>
    <form action="" method=post enctype=multipart/form-data>
      <p><input type=file name=file>
         <input type=submit value=上传>
    </form>
    '''

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)

2. 设计前端页面

在 Flask 中,我们可以使用 HTML/CSS/JavaScript 来设计前端页面,从而实现用户上传文件的功能。下面是一个简单的 HTML 文件示例,它可以帮助你理解如何在 Flask 中实现文件上传功能:

<!doctype html>
<html>
  <head>
    <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>

3. 组织路由与视图

在 Flask 应用程序中,路由负责接收用户请求并将其发送到相应的视图函数。视图函数负责处理用户请求并生成 HTTP 响应。为了实现文件上传功能,我们需要在 Flask 应用程序中添加两个视图函数:

  • /upload:这个视图函数负责接收用户上传的文件并将其保存在指定的路径中。
  • /uploads/<filename>:这个视图函数负责从服务器上获取已经上传的文件并返回给用户。

下面是完整的 Flask 应用程序示例:

import os
from flask import Flask, request, redirect, url_for, send_from_directory
from werkzeug.utils import secure_filename

app = Flask(__name__)

# 设置上传文件保存路径
app.config['UPLOAD_FOLDER'] = '/path/to/uploads'
app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS']

@app.route('/')
def home():
    return '''
    <!doctype html>
    <title>文件上传</title>
    <h1>上传文件</h1>
    <form action="/upload" method="post" enctype="multipart/form-data">
      <input type="file" name="file">
      <input type="submit" value="上传">
    </form>
    '''

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return redirect(url_for('uploaded_file',
                                filename=filename))
    else:
        return '''
        <!doctype html>
        <title>文件上传</title>
        <h1>上传文件</h1>
        <p>不支持该文件类型</p>
        '''

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

if __name__ == '__main__':
    app.run(debug=True)

4. 总结

到这里,我们就完成了一个简单的文件上传功能。在这个例子中,Flask 应用程序负责接收文件、保存文件、并将保存的文件返回给用户。希望这篇攻略能够对你有所帮助,谢谢!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3 flask实现文件上传功能 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • flask 框架操作MySQL数据库简单示例

    下面是详细的“flask 框架操作MySQL数据库简单示例”教程: 1. 准备工作 在开始之前,你需要先安装好Python和MySQL,同时安装好以下两个Python库:- Flask:一个基于 Python 的轻量级 Web 应用框架- Flask-MySQLdb:一个用于在 Flask 应用中连接和操作 MySQL 数据库的库 以macOS系统为例,可以…

    Flask 2023年5月15日
    00
  • Flask框架的学习指南之用户登录管理

    标题:Flask框架的学习指南之用户登录管理 1.概述 Flask是一个非常流行的Python Web框架,灵活可扩展。在Web应用程序中,用户登录管理是必不可少的一项功能。Flask框架提供了快速构建用户认证和授权的工具。 2.安装Flask 在开始使用Flask之前,需要先安装Flask。可以使用pip来安装Flask: pip install Flas…

    Flask 2023年5月15日
    00
  • python miniWeb框架搭建过程详解

    当我们要搭建自己的网站,动态web框架是不可或缺的。Python是一种非常流行的编程语言,它拥有丰富的web框架,比如Flask、Django等。而如果我们想要更深入了解web框架的原理,也可以尝试手动搭建一个miniWeb框架。下面,我们将分为以下几个步骤,详细讲解Python miniWeb框架的搭建过程: 搭建服务器 首先,我们需要一个能够运行Pyth…

    Flask 2023年5月16日
    00
  • 详解Flask框架中Flask-Login模块的使用

    详解Flask框架中Flask-Login模块的使用 什么是Flask-Login模块 Flask-Login是一个针对Flask的第三方模块,它提供了用户密码验证和用户会话管理的功能。它允许您在Flask应用程序中轻松实现用户认证和授权系统。 Flask-Login模块的安装 在开始使用Flask-Login模块之前,您需要先安装它。你可以使用pip命令来…

    Flask 2023年5月15日
    00
  • flask-socketio实现WebSocket的方法

    下面是详细讲解“flask-socketio实现WebSocket的方法”的完整攻略,包含两条示例说明。 简介 WebSocket是基于HTTP协议的TCP连接,它能够在客户端和服务端之间实现真正的实时双向通信。而flask-socketio是Flask框架下一个用于实现WebSocket的库,它能够帮助我们方便、快捷地实现WebSocket通信。 步骤 第…

    Flask 2023年5月15日
    00
  • Python Flask框架扩展操作示例

    接下来我将为您详细讲解“Python Flask框架扩展操作示例”的完整攻略,该攻略包含两条示例说明。 示例一:Flask插件Flask-Cache 什么是Flask-Cache? Flask-Cache是Flask框架的一个插件,它提供了对缓存的支持。 如何安装Flask-Cache? 使用pip工具即可,命令如下: $ pip install Flask…

    Flask 2023年5月15日
    00
  • flask重启后端口被占用的问题解决(非kill)

    下面我将详细讲解如何解决“flask重启后端口被占用”的问题。 问题描述 在使用 Flask 开发 web 应用时,有时会出现在重启应用程序后端口被占用的问题,导致无法正常运行应用程序。 解决方法 方法一:更改应用程序端口 更改应用程序端口是最直接的解决方法。可以通过修改 Flask 应用程序的 config 文件,将端口号改为其他未被占用的端口。 示例如下…

    Flask 2023年5月16日
    00
  • Flask中sqlalchemy模块的实例用法

    接下来我为您详细介绍Flask中sqlalchemy模块的实例用法的完整攻略。 1. 安装和配置 首先需要安装Flask和sqlalchemy模块,可以使用pip命令来进行安装。 pip install Flask pip install sqlalchemy 安装完成后,首先需要在Flask应用程序中导入sqlalchemy模块: from flask_s…

    Flask 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部