Python Flask 接收前端上传的图片

为了编写一个Python接口来接收前端上传的图片、将其存储到本地并返回存储地址,你可以使用Flask框架,这是一个轻量级的Web框架,非常适合快速搭建Web应用。

以下是一个简单的示例,展示了如何实现这个功能:

  1. 首先,确保你已经安装了Flask。你可以使用以下命令安装:

    bash 复制代码
    pip install Flask
  2. 创建一个Python文件(例如 app.py),并编写以下代码:

python 复制代码
from flask import Flask, request, jsonify
import os
import uuid

app = Flask(__name__)

# 配置上传文件夹和允许的文件扩展名
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# 确保上传文件夹存在
if not os.path.exists(UPLOAD_FOLDER):
    os.makedirs(UPLOAD_FOLDER)

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/upload', methods=['POST'])
def upload_file():
    # 检查是否有文件部分在请求中
    if 'file' not in request.files:
        return jsonify({'error': 'No file part'}), 400
    
    file = request.files['file']
    
    # 如果用户没有选择文件,浏览器也会提交一个空的文件名,没有文件内容
    if file.filename == '':
        return jsonify({'error': 'No selected file'}), 400
    
    if file and allowed_file(file.filename):
        filename = str(uuid.uuid4()) + '_' + file.filename
        filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        file.save(filepath)
        
        return jsonify({'message': 'File uploaded successfully', 'path': filepath}), 201
    else:
        return jsonify({'error': 'File type not allowed'}), 400

if __name__ == '__main__':
    app.run(debug=True)
  1. 运行你的Flask应用:

    bash 复制代码
    python app.py
  2. 现在,你可以使用Postman或其他HTTP客户端发送一个POST请求到 http://127.0.0.1:5000/upload,并在请求中包含一个文件(字段名为 file)。

示例请求(使用Postman)

  • URL: http://127.0.0.1:5000/upload
  • Method: POST
  • Body: form-data
    • Key: file
    • Value: 选择你要上传的图片文件

响应示例

如果上传成功,你将收到一个JSON响应,其中包含成功信息和图片存储路径,例如:

json 复制代码
{
    "message": "File uploaded successfully",
    "path": "uploads/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_yourimage.jpg"
}

如果上传失败(例如文件类型不允许或没有选择文件),你将收到一个包含错误信息的JSON响应。

这个示例展示了基本的文件上传功能,但在生产环境中,你可能需要添加更多的错误处理、安全性措施(如验证上传者身份、限制上传大小等)以及日志记录功能。

相关推荐
deli0070075 分钟前
Markdown 实时预览器:左边写右边看,排版效率翻倍
前端·ai编程
一晌小贪欢9 分钟前
Python办公14:批量解压文件夹内的所有 ZIP/RAR 并自动分类
开发语言·python·excel·数据可视化·python办公
郑州光合科技余经理10 分钟前
海外版外卖系统架构:订单怎么流转、权限怎么分
java·开发语言·前端·系统架构·uni-app·php·ai编程
Python 实战手记11 分钟前
企业微信主体变更公证书办理全解析:适用场景、材料规范、踩坑点与Python信息校验脚本
开发语言·python·企业微信
zQ.ii17 分钟前
WPF 触发器学习笔记
笔记·学习·wpf
郝学胜_神的一滴21 分钟前
Effective Python 条款 2:遵循 PEP 8 编码风格,写出高质量 Python 代码
python·算法
郝学胜-神的一滴22 分钟前
Effective Python 条款 1:确认你正在使用的 Python 版本
开发语言·数据结构·python·程序人生·算法
pengyu25 分钟前
【Kotlin 协程修仙录 · 炼虚境 · 初阶】 | 虚空造物:Channel 基础与协程间通信的管道艺术
android·前端·kotlin
提线木偶27 分钟前
CORS 到底谁说了算?一份跨域配置的避坑指南
前端·后端
RanMatrix32 分钟前
Python列表精讲
python