Как мне вернуть элемент <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-атаки. Это плохая идея.