Me gustaría enviar varias imágenes al backend de FastAPI mediante solicitudes de Python.
Lado del servidor
from fastapi import FastAPI, UploadFile, File from typing import List app = FastAPI() @app.post("/") def index(file: List[UploadFile] = File(...)): list_image = [] for i in file: list_image.append(i.filename) return {"list_image": list_image}Lado del cliente
Actualmente, solo puedo enviar una solicitud con una sola imagen. Sin embargo, me gustaría poder enviar varias imágenes.
import requests import cv2 frame = cv2.imread("../image/3.png") imencoded = cv2.imencode(".jpg", frame)[1] file = {'file': ('image.jpg', imencoded.tostring(), 'image/jpeg', {'Expires': '0'})} response = requests.post("http://127.0.0.1:8000/", files=file)Úselo como se indica a continuación:
import requests url = 'http://127.0.0.1:8000/' files = [('file', open('images/1.png', 'rb')), ('file', open('images/2.png', 'rb'))] resp = requests.post(url=url, files=files)o también podrías usar:
import requests import glob path = glob.glob("images/*", recursive=True) # images' path files = [('file', open(img, 'rb')) for img in path] url = 'http://127.0.0.1:8000/' resp = requests.post(url=url, files=files)