Как загрузить несколько изображений в FastAPI с помощью запросов Python?Python

Программы на Python
Anonymous
Как загрузить несколько изображений в FastAPI с помощью запросов Python?

Сообщение Anonymous »

Пример
Вот мой код, пытающийся загрузить список изображений:
import requests
import glob
import cv2

path = glob.glob("test_folder/*", recursive=True) # a list of image's path

lst_img = []
for p in path[:3]:
# img = cv2.imread(p)
lst_img.append((p, open(p, 'rb'), "image/jpeg"))

data = {"files": lst_img}

url = "http://localhost:6789/" # url api of app

res = requests.post(url=url, data=data)

print(res.status_code)

print(res.text)


Описание
Я пытаюсь загрузить список изображений с помощью запросов Python (пакета) в конечную точку FastAPI, но, возможно, формат моего запроса неправильный , что приводит к ошибке 422:
"detail":[{"loc":["body","files",0],"msg":"Expected UploadFile, received: ","type":"value_error"}

Это формат моего запроса:
{'files': [('test_folder/image77.jpeg', , 'image/jpeg'), ('test_folder/image84.jpeg', , 'image/jpeg'), ('test_folder/image82.jpeg', , 'image/jpeg')]}

Я пробовал много способов, но всегда терпел неудачу. Большое спасибо, если вы, ребята, поможете решить эту проблему.
Окружающая среда
  • ОС: Linux: (Ubuntu 18.04)
    Версия FastAPI: 0.61.1
  • Версия запросов: 2.24.0
    Версия Python: 3.7.5< /li>
Я попробовал следующее, но все равно не работает:
lst_img.append(("file", (p, open(p, 'rb'), "image/jpeg")))

Мой FastAPI main.py
from typing import List

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import StreamingResponse, FileResponse

app = FastAPI()

@app.post("/")
async def main(files: List[UploadFile] = File(...)):
# file_like = open(video_path, mode="rb")
# return StreamingResponse(file_like, media_type="video/mp4")
return {"filenames": [file.filename for file in files]}


Подробнее здесь: https://stackoverflow.com/questions/644 ... n-requests

Вернуться в «Python»