0

我正在尝试找到一种使用 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

请帮忙

4

1 回答 1

1

我假设您正在尝试提供静态文件,这些文件在此处(FastAPI)和此处(Starlette)都有记录。

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

关于安全性,使用 'file:///Users/us...' 会将您的操作系统和文件系统暴露给可以访问您网站的任何人,并可能为 XSS 攻击之类的事情打开大门。这是个坏主意。

于 2020-02-24T10:41:03.187 回答