【发布时间】:2020-10-23 06:06:47
【问题描述】:
示例
这是我尝试上传图片列表的代码:
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":"Expected UploadFile, received: <class 'str'>","type":"value_error"}
这是我的请求格式:
{'files': [('test_folder/image77.jpeg', <_io.BufferedReader name='test_folder/image77.jpeg'>, 'image/jpeg'), ('test_folder/image84.jpeg', <_io.BufferedReader name='test_folder/image84.jpeg'>, 'image/jpeg'), ('test_folder/image82.jpeg', <_io.BufferedReader name='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]}
【问题讨论】:
-
FastAPI是否在localhost:6789上运行?请也分享该代码 -
是的,我在 localhost 上使用自定义端口 6789 运行,我编辑了我的问题,让我们再看看
标签: python python-requests fastapi