Python 请求在FastAPI中上载多个图像的格式 例子

Python 请求在FastAPI中上载多个图像的格式 例子,python,python-requests,fastapi,Python,Python Requests,Fastapi,以下是我尝试上载图像列表的代码: 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

以下是我尝试上载图像列表的代码:

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)

描述 我正在尝试通过url api上传图像列表。在这里,我使用请求(python包),但可能我的请求格式错误,因此我无法发布到url api。我得到错误代码422:

“detail”:[{“loc”:[“body”,“files”,0],“msg”:“预期上载文件,收到:”,“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
我试过了,但还是不起作用

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]}

您应该使用
请求
模块的
文件
参数发送文件

导入请求
导入glob
path=glob.glob(“test_folder/*”,recursive=True)#图像路径列表
lst_img=[]
对于路径[:3]中的p:
追加({“文件”:打开(p,'rb')})
url=”http://localhost:6789/“#应用程序的url api
对于lst_img中的数据:
res=requests.post(url=url,files=data)
打印(res.status_代码)
打印(res.text)

FastAPI是否在
localhost:6789
上运行?请共享该代码是的,我使用自定义端口6789在localhost上运行,我编辑了我的问题,让我们再看一遍Hank u,但我想我希望同时发送多个图像,而不是逐个发送,因为FastAPI允许一个图像列表。如果我包装一个for..循环,那么它就没用了。