Я создаю REST API (используя FastAPI), и в моем проекте есть локальная папка с изображениями, и я должен отправить имя фотографии в POST-запросе, чтобы получить к нему доступ с помощью созданного мной метода.
Проблема в том, что когда я отправляю имя фотографии в POST, оно не находит файл в моем приложении.
Как найти фотографию, чтобы использовать ее?
Я использую относительный путь (dirname и abspath из os.path), но он не работает.
Структура папок:
.
├── app/
│ └── main.py
├── public/
│ ├── 1.png
│ ├── 2.png
│ └── 3.png
├── docker-compose.yml
├── Dockerfile
├── .gitignore
└── requirements.txt
main.py
from fastapi import FastAPI
from starlette.responses import JSONResponse
import io
from os.path import dirname, abspath, join
from PIL import Image
dirname = dirname(dirname(abspath(__file__)))
images_path = join(dirname, '/public/')
def read_byte_img(image_path):
img = Image.open(image_path, mode='r')
imgByteArr = io.BytesIO()
img.save(imgByteArr, format='PNG')
return imgByteArr
@app.post("/test")
def test(image_name: str):
image_name = image_name + '.png'
img = images_path + image_name
byte_img = read_byte_img(img)
return SONResponse({'response': str(byte_img)})
Я пытался отправить ПОЧТУ:
localhost/analyze?image_name=1
И ответ был:
FileNotFoundError: [Errno 2] No such file or directory: '/public/1.png'