Как вернуть элемент ‹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

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


person RalphCh97    schedule 20.02.2020    source источник


Ответы (1)


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

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

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

person Hedde van der Heide    schedule 24.02.2020