Flask接收上传图片方法实现

下面是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猜解网站数据库管理员密码的脚本

    首先,我想强调的是,攻击他人网站是不道德且违法的行为。在任何情况下,我们都不应该尝试侵入他人网站或服务,以防止引起不必要的后果。 现在,让我们来看一下如何创建一个Python脚本来尝试破解一个Web应用程序数据库管理员密码的攻击。我们将使用Python编程语言,与SQL注入攻击相结合来实现这个目标。 步骤如下: 使用Python requests库发送POS…

    Flask 2023年5月16日
    00
  • 用Python Flask创建简洁高效的URL短链接服务

    创建高效的URL短链接服务是一个非常流行的任务,它可以使网站更加用户友好并提高 SEO。在本文中,我将介绍如何使用Python Flask框架快速创建一个简洁高效的URL短链接服务。 步骤1:安装Flask Flask 可以通过pip包管理器安装。在执行下面的命令之前,请确保已经安装了pip: pip install Flask 步骤2:创建Flask应用程…

    Flask 2023年5月16日
    00
  • Python-Flask:动态创建表的示例详解

    下面是详细的攻略: 标题:Python-Flask:动态创建表的示例详解 1. 示例一: 在Flask Web框架中,可以通过SQLAlchemy库来实现动态创建数据库表的功能。首先需要导入SQLAlchemy库,并配置数据库连接参数,例如: from flask_sqlalchemy import SQLAlchemy app = Flask(__name…

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

    下面就详细讲解“jsp留言板源代码四: 给jsp初学者.”的攻略。 前言 “jsp留言板源代码四: 给jsp初学者.”是一份用于帮助初学jsp的开发者,快速掌握jsp留言板开发的源代码。本攻略将详细介绍如何运行该源代码,并对其中两条示例进行说明。 运行源代码 运行jsp留言板源代码前,需要先确保本地电脑已经安装了Java和Tomcat环境。接下来,按照以下步…

    Flask 2023年5月16日
    00
  • 10款最好的Web开发的 Python 框架

    为了详细地讲解 “10款最好的Web开发的 Python 框架”的完整攻略,我们可以分成以下几个方面来介绍。 简介 首先,我们需要概述一下什么是Python框架。Python框架是指一套可用于Web应用程序的API(应用程序编程接口)。它们可以帮助Python开发人员更好地处理Web请求、路由URL、管理安全性、处理输入输出等应用程序功能。 Web开发常见的…

    Flask 2023年5月16日
    00
  • 在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

    下面是在阿里云服务器上配置CentOS+Nginx+Python+Flask环境的完整攻略: 环境准备 选购适合的阿里云服务器,选择 CentOS 7 系统的实例。 配置服务器的安全组规则,开放80端口和SSH端口22。 登录到服务器,在终端中输入以下命令进行更新和安装: sudo yum update sudo yum install nginx pyth…

    Flask 2023年5月15日
    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
  • 使用 prometheus python 库编写自定义指标的方法(完整代码)

    以下是详细讲解“使用 prometheus python 库编写自定义指标的方法(完整代码)”的攻略,包含两条示例说明。 1. 引言 Prometheus 是一种流行的开源监控系统,使用一种基于 HTTP/HTTPS 协议的 pull 模型,从被监控服务中收集指标数据。Prometheus Python 库是一种使用 Python 语言编写的 Prometh…

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