Как мне вернуть элемент <img> с помощью FastAPI

Я пытаюсь найти способ вставить изображение с помощью FastAPI, это мой код:

app = FastAPI()

app.add_middleware(
CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"]
)

@app.get("/files/{file_path:path}")


def read_user_me(file_path: str):
html_content = """

<html>
    <head>
        <title>Some HTML in here</title>
    </head>
    <body>
        <img src="file:///Users/user/Desktop/document/app//{0}"></img>
    </body>
</html>

"""

html_content =  html_content.format(file_path,file_path)
return HTMLResponse(content=html_content, status_code=200)

Когда запускаю univorn и открываю localhost. Я получаю следующую ошибку:

Не разрешено загружать локальный ресурс: file:///Users/user/Desktop/document/app//img.jpg

Пожалуйста помоги

1 ответ

Решение

Я предполагаю, что вы пытаетесь обслуживать статические файлы, что описано здесь (FastAPI) и здесь (Starlette).

В более продвинутой настройке (но распространенной практике) вы можете обслуживать статические файлы (и загрузки пользователей), настроив прокси перед вашим приложением (например, nginx, lighttpd и т. Д., Которые оптимизированы для такого рода запросов).

Что касается безопасности, использование 'file:///Users/us...' раскрывает многое о вашей операционной системе и файловой системе любому, у кого есть доступ к вашему веб-сайту, и потенциально открывает двери для таких вещей, как XSS-атаки. Это плохая идея.

Другие вопросы по тегам