如何使用 FastAPI return 一个 <img> 元素

How do I return an <img> element with 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 并打开本地主机时。 我收到以下错误:

不允许加载本地资源:file:///Users/user/Desktop/document/app//img.jpg

请帮忙

我假设您正在尝试提供静态文件,这些文件记录在 here (FastAPI) and here (Starlette) 中。

在更高级的设置(但常见做法)中,您可以通过在您的应用程序(例如 nginx、lighttpd 等)前设置代理来提供静态文件(和用户上传),这些都针对这些类型进行了优化请求数)。

关于安全性,使用 'file:///Users/us...' expos 会向任何有权访问您网站的人公开您的 os 和文件系统,并可能为 XSS 攻击等打开大门。这是个坏主意。