python3 flask实现文件上传功能

下面我将为你详细讲解“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日

相关文章

  • Python利用flask sqlalchemy实现分页效果

    下面为你详细讲解如何利用flask sqlalchemy实现分页效果。 准备工作 首先,我们需要安装flask sqlalchemy包,可以通过 pip install flask_sqlalchemy 命令进行安装。另外,我们还需要创建一个用于存储数据的数据库。这里我们使用sqlite作为数据库,创建一个名为example.db的数据库文件,以存储数据。 …

    Flask 2023年5月15日
    00
  • python实现一个简单的web应用框架

    下面是关于Python实现一个简单的Web应用框架的完整攻略。 什么是Web应用框架? Web应用框架(web application framework)是一种软件框架,为用户提供了一个实现Web应用的基础结构,方便程序员开发Web应用。框架中的组件可以自动执行一些常用的任务,如数据验证、路由、用户认证、数据存储等,使得开发人员能够专注于业务逻辑的实现,而…

    Flask 2023年5月16日
    00
  • 使用python+Flask实现日志在web网页实时更新显示

    使用Python+Flask实现日志在Web网页实时更新显示的过程可以分为以下几步: 安装Flask和WebSocket 在命令行中执行以下命令,安装Flask和WebSocket: pip install flask pip install flask-socketio 创建Flask应用 创建一个Python脚本文件,命名为app.py,代码如下: fr…

    Flask 2023年5月16日
    00
  • 哪些是python中web开发框架

    在Python中,有许多不同的Web框架可供选择。以下是其中一些最受欢迎和最流行的框架。 Flask:Flask是一个轻量级的Web应用程序框架,它是构建Web应用程序非常简单的框架之一。 Flask是使用Python并遵循Python哲学的核心原则之一:简单性。许多高度使用的Web应用程序都使用Flask,例如Pinterest,LinkedIn等。 Dj…

    Flask 2023年5月15日
    00
  • Flask深入了解Jinja2引擎的用法

    首先介绍一下Jinja2引擎,它是一个基于Python的模板引擎,常用于web开发中生成HTML页面。 一、Jinja2引擎的基本用法 在Flask中,可以通过实例化Jinja2对象,将其与app关联,来使用Jinja2引擎。示例代码如下: from flask import Flask, render_template from jinja2 import…

    Flask 2023年5月15日
    00
  • python自动化测试中APScheduler Flask的应用示例

    以下是关于“python自动化测试中APScheduler Flask的应用示例”的详细讲解: 简介 APScheduler 是一个轻量级的 Python 定时任务调度框架,可以添加多个任务,可以动态添加修改和删除任务,先来看一下简单示例: from apscheduler.schedulers.blocking import BlockingSchedul…

    Flask 2023年5月16日
    00
  • Python Flask入门之模板

    下面是Python Flask入门之模板的完整攻略: 1. 概述 Python Flask是一种轻量级的Web框架,提供了非常简单的方式来构建Web应用程序。在Flask中,模板是用来定义页面布局、数据展示和用户输入的一种方法。通过使用模板,可以在不同的页面中嵌入一些公共的HTML代码、样式等。本文将是一个Python Flask模板入门教程。 2. 准备工…

    Flask 2023年5月15日
    00
  • jsp留言板源代码二: 给jsp初学者.

    我们来解析一下 “jsp留言板源代码二: 给jsp初学者.” 这篇文章的内容和示例。 1. 简介 该文章主要介绍了如何使用 JSP 技术开发一个简单的留言板,适合初学者练手。该留言板实现了基本的留言功能,用户可以添加留言,管理员可以浏览留言,并且可以删除不当的留言。 2. 留言板示例1 这个示例主要介绍了如何创建一个简单的留言板页面,包含了用户的留言和管理员…

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