Flask接收上传图片方法实现

yizhihongxing

下面是Flask接收上传图片的完整攻略。

准备工作

首先,我们需要先安装Flask的插件Flask-Uploads,可以通过pip直接安装,命令如下:

pip install Flask-Uploads

安装完成后,在Flask的应用中引入该插件:

from flask_uploads import UploadSet, configure_uploads, IMAGES

app = Flask(__name__)
app.config['UPLOADED_PHOTOS_DEST'] = 'static/img' # 存放上传图片的文件夹
photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)

其中,UploadSet用于初始化上传文件集合,configure_uploads用于设置上传文件存放的目录。IMAGES则表示只允许上传图片文件。

方法一:基本文件上传

HTML文件

首先在HTML文件中需要有一个上传图片的表单,示例代码如下:

<form action="{{ url_for('upload') }}" method="POST" enctype="multipart/form-data">
    <input type="file" name="photo">
    <input type="submit" value="上传">
</form>

其中,action的值为Flask框架中负责处理上传操作的URL,命名为upload(),示例代码如下:

from flask import request

@app.route('/upload', methods=['POST'])
def upload():
    if request.method == 'POST' and 'photo' in request.files:
        filename = photos.save(request.files['photo']) # 保存图片并返回文件名
        return 'File successfully uploaded!'
    return 'Failed to upload file!'

upload()中,首先需要判断请求方式是否为POST,以及上传的文件是否存在。接着,使用save()方法保存图片文件,并返回文件名。

最后在响应中返回上传成功或上传失败的信息。

Markdown文件

以下是基于Flask的上传图片方法一的完整示例代码:

from flask import Flask, request
from flask_uploads import UploadSet, configure_uploads, IMAGES

app = Flask(__name__)
app.config['UPLOADED_PHOTOS_DEST'] = 'static/img'
photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)

@app.route('/', methods=['GET'])
def index():
    return '''
    <h1>文件上传示例</h1>
    <form action="{{ url_for('upload') }}" method="POST" enctype="multipart/form-data">
        <input type="file" name="photo">
        <input type="submit" value="上传">
    </form>
    '''

@app.route('/upload', methods=['POST'])
def upload():
    if request.method == 'POST' and 'photo' in request.files:
        filename = photos.save(request.files['photo'])
        return 'File successfully uploaded!'
    return 'Failed to upload file!'

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

方法二:图片压缩上传

模块安装

在压缩上传图片之前,我们需要安装python的另一个模块Pillow,可以通过pip直接安装,命令如下:

pip install Pillow

Python文件

在Python文件中新增一个压缩参数photo_size,用户可以自定义图片压缩的尺寸。示例代码如下:

from PIL import Image # 导入Image模块

@app.route('/compress_upload', methods=['POST'])
def compress_upload():
    if request.method == 'POST' and 'photo' in request.files:
        # 保存压缩图片
        file = request.files['photo']
        filename = photos.save(file)
        img = Image.open(file)
        img.thumbnail(photo_size) # 压缩图片
        img.save(os.path.join(app.config['UPLOADED_PHOTOS_DEST'], filename))

        return 'File successfully uploaded!'
    return 'Failed to upload file!'

compress_upload()方法中,读取图片文件后,使用Pillow中的thumbnail()方法进行图片的压缩,压缩后的图片保存至uploads目录中。

最后在响应中返回上传成功或上传失败的信息。

HTML文件

在HTML文件中,修改表单中action为负责处理压缩上传操作的URL,命名为compress_upload(),同时添加一个hidden类型的输入框,用于保存用户指定的压缩尺寸值。示例代码如下:

<form action="{{ url_for('compress_upload') }}" method="POST" enctype="multipart/form-data">
    <input type="file" name="photo">
    <input type="hidden" name="photo_size" value="200x200"> <!-- 自定义压缩尺寸 -->
    <input type="submit" value="上传">
</form>

Markdown文件

以下是基于Flask的压缩上传图片方法二的完整示例代码:

import os
from PIL import Image
from flask import Flask, request
from flask_uploads import UploadSet, configure_uploads, IMAGES

app = Flask(__name__)
app.config['UPLOADED_PHOTOS_DEST'] = 'static/img'
photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)

photo_size = (200, 200) # 压缩图片尺寸

@app.route('/', methods=['GET'])
def index():
    return '''
    <h1>文件上传示例</h1>
    <form action="{{ url_for('compress_upload') }}" method="POST" enctype="multipart/form-data">
        <input type="file" name="photo">
        <input type="hidden" name="photo_size" value="200x200">
        <input type="submit" value="上传">
    </form>
    '''

@app.route('/compress_upload', methods=['POST'])
def compress_upload():
    if request.method == 'POST' and 'photo' in request.files:
        # 保存压缩图片
        file = request.files['photo']
        filename = photos.save(file)
        img = Image.open(file)
        img.thumbnail(photo_size)
        img.save(os.path.join(app.config['UPLOADED_PHOTOS_DEST'], filename))

        return 'File successfully uploaded!'
    return 'Failed to upload file!'

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

以上就是Flask接收上传图片方法实现的完整攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask接收上传图片方法实现 - Python技术站

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

相关文章

  • python flask 多对多表查询功能

    让我为你详细讲解“python flask 多对多表查询功能”的完整攻略。 1. 创建多对多模型 首先,我们需要创建多对多模型。多对多模型通常需要三个表:一个主表,一个辅助表和一个次表。 在Flask中,我们可以使用SQLAlchemy库来创建多对多模型,示例如下: from flask_sqlalchemy import SQLAlchemy db = S…

    Flask 2023年5月16日
    00
  • flask 实现上传图片并缩放作为头像的例子

    这里有两个示例说明:实现在 Flask 应用中上传图片并缩放作为头像。 示例 1:上传图片并保存到本地 from flask import Flask, request, redirect from werkzeug.utils import secure_filename app = Flask(__name__) app.config[‘UPLOAD_F…

    Flask 2023年5月16日
    00
  • python+flask实现API的方法

    一、Python+Flask实现API的方法 Flask是一个轻量级的Web框架,使用Python编写。通过Flask,我们可以快速地构建一个API服务。实现API一般分为以下几个步骤: 定义路由 定义API请求的方法 定义API的返回数据格式 启动Flask应用 二、示例1 下面通过一个简单的示例来演示如何使用Python+Flask实现API。 定义路由…

    Flask 2023年5月15日
    00
  • Python from import导包ModuleNotFoundError No module named找不到模块问题解决

    当我们在Python代码中使用import导入模块时,有时会遇到ModuleNotFoundError或No module named找不到模块的问题。这个问题可能由于以下原因导致: 模块名称输入错误 模块没有安装 Python环境路径设定有误 以下是详细的解决步骤和示例说明: 1. 模块名称输入错误 在Python中导入模块时,输入模块名称非常重要,任何错…

    Flask 2023年5月16日
    00
  • Python flask sqlalchemy的简单使用及常用操作

    本文将为大家介绍Python Flask结合SQLAlchemy的简单使用及常用操作,内容分为以下几个部分: Flask简介 SQLAlchemy简介 简单使用Flask和SQLAlchemy 常用操作 示例说明 总结 1. Flask简介 Flask是一个轻量级的Python web开发框架,它的核心思想是保持简单和灵活。Flask的特点是基于Werkze…

    Flask 2023年5月15日
    00
  • Python Flask前后端Ajax交互的方法示例

    这里是关于“Python Flask前后端Ajax交互的方法示例”的完整攻略: 1. 简介 Flask是一个轻量级的Web框架,常被用于快速构建Web应用程序。在Web应用程序中,我们经常需要使用Ajax技术来实现前后端数据交互。本文将介绍使用Flask框架实现前后端Ajax交互的方法。 2. 示例一:实现前后端Ajax交互 2.1 准备工作 首先,我们需要…

    Flask 2023年5月15日
    00
  • Flask框架钩子函数功能与用法分析

    Flask框架钩子函数功能与用法分析 定义 在 Flask 中,钩子函数是指在请求的不同阶段执行的函数,它可以被用于在请求被处理之前或之后添加额外的操作。Flask 框架提供了多个钩子函数,这些函数以装饰器的形式实现,可以很方便地添加到代码中。 功能与用法 钩子函数可以用于多种目的,以下列出了一些常见的用途: 身份验证 from flask import r…

    Flask 2023年5月15日
    00
  • Flask搭建api服务的实现步骤

    下面是详细的“Flask搭建api服务的实现步骤”的完整攻略。 准备工作 在开始之前,我们需要安装一些必要的工具。具体来说,我们需要安装Python和Flask框架。 关于Python的安装,可以参考官方文档:https://www.python.org/downloads/ 关于Flask框架的安装,可以在命令行中执行以下命令: pip install f…

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