如何修改Python Flask API以接收图片作为用户输入
修改Flask API以接收图片输入
首先,GET请求不适合用来上传文件(参数长度受限且不符合HTTP规范),需要把接口改成POST请求,并通过request.files来获取上传的图片文件。以下是修改后的完整代码:
import pandas as pd from datetime import datetime from pandas import json_normalize from flask import request, Flask, Response from flask_cors import CORS import os app = Flask(__name__) CORS(app) # 定义图片保存路径(你提供的路径) IMAGE_SAVE_PATH = r"E:\env\abc.png" @app.route("/api_endpoint", methods=["POST"]) # 改为POST方法 def function_for_api(): # 从请求中获取上传的图片文件 user_input_image = request.files.get('user_input_image') if not user_input_image: # 如果没有上传文件,返回错误响应 return Response(response='{"error": "未上传图片文件"}', status=400, mimetype="application/json") # 保存图片到指定路径 user_input_image.save(IMAGE_SAVE_PATH) print(f"图片已保存到: {IMAGE_SAVE_PATH}") # 这里可以添加你的图片处理逻辑,比如读取文件内容进行分析 # 示例:读取图片二进制内容 # with open(IMAGE_SAVE_PATH, 'rb') as f: # img_content = f.read() # 返回处理后的JSON响应 resJson = '{"status": "success", "message": "图片上传并保存成功"}' return Response(response=resJson, status=200, mimetype="application/json") if __name__ == "__main__": app.run(debug=True) # 开启debug方便开发调试
关键修改点说明:
- 将请求方法从
["GET"]改为["POST"],符合文件上传的HTTP规范。 - 用
request.files.get('user_input_image')替代request.args.get,获取上传的文件对象。 - 添加了文件存在性检查,避免空文件导致报错。
- 新增了图片保存逻辑,将上传的图片保存到你指定的
E:\env\abc.png路径。
测试API的方法:
你可以用以下方式测试这个接口:
- 使用curl命令(终端执行):
curl -X POST -F "user_input_image=@E:\env\test.png" http://127.0.0.1:5000/api_endpoint
(把E:\env\test.png换成你要上传的实际图片路径)
- 使用Postman/ApiFox:
- 选择请求方法为POST,地址填
http://127.0.0.1:5000/api_endpoint - 切换到
Body标签,选择form-data格式 - 添加一个键为
user_input_image的项,类型选择File,然后选择本地图片文件上传
内容的提问来源于stack exchange,提问作者Divyank
相关产品推荐
相关产品推荐

