Python Flask实现图片上传与下载的示例详解

下面我来详细讲解一下“Python Flask实现图片上传与下载的示例详解”的完整攻略。

一、示例一:实现图片上传

1. 安装Flask

首先需要安装Flask,可以使用pip install flask命令进行安装。

pip install flask

2. 创建Flask应用

创建一个Python文件,比如叫做app.py,然后在里面写入以下代码:

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

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static/uploads'  # 上传文件保存位置

@app.route('/')
def home():
    return """
        <html>
            <body>
                <h1>图片上传示例</h1>
                <form method="POST" action="/upload" enctype="multipart/form-data">
                    <input type="file" name="file">
                    <input type="submit" value="上传">
                </form>
            </body>
        </html>
    """

@app.route('/upload', methods=['POST'])
def upload():
    if 'file' not in request.files:
        return redirect(request.url)
    file = request.files['file']
    if file.filename == '':
        return redirect(request.url)
    file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
    return redirect(url_for('home'))

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

这段代码定义了一个名为app的Flask应用,并设置了一个名为UPLOAD_FOLDER的变量,该变量表示上传文件保存的位置。然后,我们定义了两个路由,一个路由为'/',用于显示上传图片的表单,另一个路由为'/upload',用于处理上传图片的请求。

3. 运行Flask应用

可以使用以下命令启动Flask应用:

python app.py

然后,在浏览器中访问http://localhost:5000即可看到一个用于上传图片的表单。选择一张图片,然后点击上传按钮,该图片将会被上传到static/uploads目录下。

二、示例二:实现图片下载

1. 创建一个用于下载图片的路由

在app.py中添加一个新的路由/show/,用来获取图片文件名,并返回该文件的绝对路径。代码如下:

@app.route('/show/<filename>')
def show(filename):
    return redirect(url_for('static', filename=f'uploads/{filename}'), code=301)

2. 修改home页面代码

在home页面中添加一个链接用来下载上传的图片,代码如下:

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

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static/uploads'  # 上传文件保存位置

@app.route('/')
def home():
    # 获取上传图片列表
    upload_files = os.listdir(app.config['UPLOAD_FOLDER'])
    # 构造页面HTML代码
    html = """
        <html>
            <body>
                <h1>图片上传示例</h1>
                <form method="POST" action="/upload" enctype="multipart/form-data">
                    <input type="file" name="file">
                    <input type="submit" value="上传">
                </form>
                <br>
                <h1>已上传的图片</h1>
                <ul>
    """
    for file in upload_files:
        html += f'<li><a href="/show/{file}" target="_blank">{file}</a></li>'
    html += """
                </ul>
            </body>
        </html>
    """
    return html

@app.route('/upload', methods=['POST'])
def upload():
    if 'file' not in request.files:
        return redirect(request.url)
    file = request.files['file']
    if file.filename == '':
        return redirect(request.url)
    file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
    return redirect(url_for('home'))

@app.route('/show/<filename>')
def show(filename):
    return redirect(url_for('static', filename=f'uploads/{filename}'), code=301)

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

3. 运行Flask应用

和示例一一样,使用以下命令启动Flask应用:

python app.py

然后,在浏览器中访问http://localhost:5000即可看到一个上传图片的表单,上传一张图片之后,会在该页面下方显示已上传的图片列表,点击该列表中的图片名称,即可下载该图片。

至此,我们就实现了图片上传和下载的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Flask实现图片上传与下载的示例详解 - Python技术站

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

相关文章

  • Python接口测试环境搭建过程详解

    Python接口测试环境搭建过程详解 本文将介绍如何搭建Python接口测试环境以及基本的调试工具的使用,使你可以快速开始编写接口测试脚本。 步骤一:安装Python Python是开发接口测试必不可少的工具。你可以到Python官方网站下载最新的Python安装包,然后根据安装向导进行安装。安装完成后,你可以通过命令行输入以下代码检查你的Python版本:…

    Flask 2023年5月16日
    00
  • python flask实现分页的示例代码

    接下来我将为您详细讲解如何使用 Python Flask 实现分页功能的示例代码攻略。 1. 实现分页功能 – 示例1 第一步,安装 Flask 和 Flask-Pagination: pip install Flask pip install Flask-Pagination 第二步,引入 Flask 和 Flask-Pagination: from fl…

    Flask 2023年5月15日
    00
  • docker-compose统一管理多个容器使用详解

    Docker-Compose 统一管理多个容器使用详解 Docker-Compose 是 Docker 官方提供的管理多个容器的工具。通过一个配置文件可以管理、启动和停止多个容器,非常方便。 本文将详细讲解 Docker-Compose 的使用方法和相关配置。同时,提供两个实例演示来说明如何使用 Docker-Compose。 Docker-Compose …

    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中提供静态文件的实例讲解”的完整攻略: 提供静态文件的方法 Flask中提供静态文件,主要是使用Flask应用对象的static_folder和static_url_path参数。其中,static_folder指定静态文件的存储路径,static_url_path则是静态URL的前缀。默认情况下,static_folder为应用程序的/s…

    Flask 2023年5月16日
    00
  • 一个基于flask的web应用诞生 bootstrap框架美化(3)

    我将详细讲解“一个基于flask的web应用诞生 bootstrap框架美化(3)”的完整攻略。 本篇攻略主要讲解如何通过使用Bootstrap框架来美化Flask应用程序。 示例1:使用Bootstrap的导航栏 首先,在HTML文件中引入Bootstrap的CSS和JS文件: <!DOCTYPE html> <html> <…

    Flask 2023年5月15日
    00
  • 详解 python logging日志模块

    详解 Python logging 日志模块 简介 Python logging 模块是一个强大且灵活的记录日志的模块,它允许你在你的 Python 应用程序中执行大规模的日志记录,并在日志消息的不同级别中进行分类和过滤。使用 Python logging 模块可以有效地记录调试信息、错误和异常信息、警告、信息等。 Python logging 模块支持以下…

    Flask 2023年5月16日
    00
  • Flask框架学习笔记之模板操作实例详解

    下面就来详细讲解“Flask框架学习笔记之模板操作实例详解”的完整攻略,并包含两条示例说明。 概述 在Flask框架中,模板是最常用的组件之一。模板是一个包含特定语法的文本文件,它可以在运行时被动态地替换为具体内容。通过使用模板,我们可以将内容与代码分离,使得我们的代码更加易于维护和可读性更强。 在本篇攻略中,我们将详细讲解如何在Flask框架中使用模板。我…

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