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日

相关文章

  • 一文了解Flask框架

    Flask是一款基于Python语言的轻量级Web框架,它的设计目标是简单易用、高效灵活。其核心实现只有约3000行代码,但却支持RESTful请求、Jinja2模板引擎、Werkzeug工具箱等众多功能,适合用于构建小型Web应用、快速原型开发等领域。 Flask框架的核心思想是WSGI(Web Server Gateway Interface),即Web…

    2023年3月13日
    00
  • python文件路径操作方法总结

    基于”python文件路径操作方法总结”这个主题,我会给出完整的攻略,包括以下几个部分的讲解: 什么是文件路径? Python中的文件路径表示方式 文件路径的操作方式(包括绝对路径和相对路径) 示例说明 1. 什么是文件路径? 文件路径是标识文件在计算机上存储位置的一串字符,一般包括文件所在驱动器、目录、文件名和文件扩展名等内容。 在Windows上,文件路…

    Flask 2023年5月16日
    00
  • Python Flask框架实现Proteus仿真Arduino与网页数据交互

    让我为您提供一份详细的攻略,来实现Python Flask框架实现Proteus仿真Arduino与网页数据交互。 安装Proteus和Arduino IDE 首先,您需要安装Proteus仿真软件和Arduino IDE开发环境,这样才能进行电路仿真和代码编写。您可以根据自己的操作系统下载合适的安装包进行安装。 准备硬件 接下来,您需要准备一块Arduin…

    Flask 2023年5月16日
    00
  • Flask项目中实现短信验证码和邮箱验证码功能

    以下是“Flask项目中实现短信验证码和邮箱验证码功能”的完整攻略: 短信验证码功能的实现 调用短信API接口 首先,需要找到一个靠谱的短信API接口。可以通过第三方短信服务商提供的短信API接口来发送短信验证码。 以阿里云为例,可以借助阿里云的短信服务平台实现。 import json from aliyunsdkcore.client import Ac…

    Flask 2023年5月15日
    00
  • vue使用WebSocket模拟实现聊天功能

    下面是详细讲解“vue使用WebSocket模拟实现聊天功能”的攻略。 一、背景介绍 WebSocket协议是HTML5出现后新增的一项协议,基于TCP协议,可以实现客户端和服务器的双向通信。相比传统的Ajax轮询或Comet长轮询方式,WebSocket具有更低的延迟、更高的性能和更强的兼容性。 在Vue中使用WebSocket可以实现实时更新数据、聊天功…

    Flask 2023年5月16日
    00
  • Python个人博客程序开发实例框架设计

    针对“Python个人博客程序开发实例框架设计”的完整攻略,我来给出一份详细的解答。 1. 确定需求与设计 在进行博客程序开发前,需要理清需求与设计: 1.1 需求 我们设定的博客系统基本功能包括: 用户可以进行博客文章的发布、修改、删除、阅读等操作; 用户可以注册账号,登录后才能进行博客的发布操作; 支持多用户操作,每个用户只能修改、删除自己发布的文章; …

    Flask 2023年5月16日
    00
  • 使用Flask-Cache缓存实现给Flask提速的方法详解

    下面是“使用Flask-Cache缓存实现给Flask提速的方法详解”的完整攻略: 1. 什么是Flask-Cache? Flask-Cache是一个Flask框架的缓存扩展,能够方便地缓存常用的数据,如SQL查询结果、API返回结果、视图函数、模板渲染结果等,从而提高网站的性能。Flask-Cache支持多种缓存类型,包括内存缓存、文件缓存、Redis缓存…

    Flask 2023年5月15日
    00
  • Flask 的重定向和错误处理

    Flask 是一个轻量级的 Web 框架,它提供了重定向和错误处理的方法,使得 Web 应用程序的开发变得更为方便和流畅。 本篇文章将详细介绍 Flask 中的重定向和错误处理方法,并提供代码示例。 重定向 重定向是指将用户从一个 URL 地址自动转向到另一个 URL 地址的过程。在 Flask 中,可以使用 redirect() 方法实现重定向功能。具体方…

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