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

yizhihongxing

下面我来详细讲解一下“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日

相关文章

  • Flask框架学习笔记之表单基础介绍与表单提交方式

    Flask是Python语言中一个非常流行的轻量级Web应用框架,适合搭建小型项目或者功能简单的应用,下面是关于Flask表单基础的介绍和表单提交方式的攻略。 一、表单基础介绍 Web应用中表单是一种常见的接口元素。表单允许用户通过交互式方式输入信息并向服务器提交数据。在Flask中,可以使用Flask-WTF插件来构建和处理表单。 首先需要安装Flask-…

    Flask 2023年5月16日
    00
  • python用Pygal如何生成漂亮的SVG图像详解

    准备工作 Pygal是一个轻量级的Python图表库,支持生成各种类型的矢量图像,并且可以直接输出成SVG格式文件。在使用Pygal之前,需要先安装该库: pip install pygal 创建一个简单的Pygal图表 首先,我们可以创建一个简单的Pygal图表,来熟悉一下Pygal的使用方法。以下是一个创建柱状图的示例代码: import pygal #…

    Flask 2023年5月16日
    00
  • Flask web上传获取图像Image读取并使用方式

    下面我将详细讲解 Flask web上传获取图像Image读取并使用方式的完整攻略,包含两条示例说明。 Flask Web上传获取图像并读取 在 Flask Web 应用程序中,最简单的上传图像的方法就是使用 Python 的 werkzeug 库中的 FileStorage 对象。可以在 HTML 表单中添加 file 类型的 input,然后在 Flas…

    Flask 2023年5月16日
    00
  • ajax post下载flask文件流以及中文文件名问题

    下面是关于“ajax post下载flask文件流以及中文文件名问题”的完整攻略,其中包含两条示例说明。 1. AJAX post下载Flask文件流 1.1 前端实现 function downloadFile() { var xhr = new XMLHttpRequest(); xhr.open(‘POST’, ‘/download’, true); …

    Flask 2023年5月16日
    00
  • Python Flask前端自动登录功能实现详解

    下面我将详细讲解“Python Flask前端自动登录功能实现详解”的完整攻略。 一、背景 近年来,随着人们对于前端交互的要求越来越高,前端自动登录也成为了一个重要的需求。Python Flask作为一种轻量级的Web应用框架,也提供了相关的实现方式。 二、实现方法 在Python Flask中,实现前端自动登录的方式一般有两种方法:基于Cookie和基于S…

    Flask 2023年5月15日
    00
  • Python利用Flask-Mail实现发送邮件详解

    下面是Python利用Flask-Mail实现发送邮件的完整攻略: 一、Flask-Mail简介 Flask-Mail是Flask框架的一个扩展模块,可以使发送电子邮件更方便。它提供了SMTP认证、HTML邮件等功能,使用起来十分简单。 二、安装Flask-Mail 在使用Flask-Mail之前,需要先安装Flask-Mail扩展。使用pip安装即可: p…

    Flask 2023年5月16日
    00
  • flask开启多线程的具体方法

    下面是关于Flask如何在应用程序中开启多线程的攻略。 1. 前置条件 在开始讲解Flask如何开启多线程之前,我们需要先确保已经满足以下前置条件: 已经安装了Flask和Python(版本要求3.4或更高); 在程序中,需要使用到threading和time模块。 2. Flask开启多线程的方法 在Flask中开启多线程的主要方式是使用Python标准库…

    Flask 2023年5月15日
    00
  • 如何使用Cython对python代码进行加密

    使用Cython对Python代码进行加密,通常是通过将Python代码编译为Cython模块,该模块可以加密并保护您的Python代码。下面我们来一步步了解如何使用Cython对Python代码进行加密。 第一步: 安装Cython 在开始使用Cython编译Python代码之前,您需要先安装Cython。您可以使用pip来安装Cython,可以在命令行界…

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