Streamlit 的静态文件服务(Static file serving)

Streamlit 应用可以托管并提供小型静态媒体文件,用于支持那些无法通过常规 媒体元素 实现的媒体嵌入场景。

如需启用此功能,请在配置文件的 [server] 部分设置 enableStaticServing = true
或使用环境变量 STREAMLIT_SERVER_ENABLE_STATIC_SERVING=true

存放在应用文件同级目录下 ./static/ 文件夹中的媒体文件,
可通过路径 app/static/[文件名] 访问,
例如 http://localhost:8501/app/static/cat.png

使用细节

  • 以下扩展名的文件将被正常提供:

    • 常见图片格式:.jpg.jpeg.png.gif
    • 常见字体格式:.otf.ttf.woff.woff2
    • 其他类型:.pdf.xml.json

    其他任何类型的文件都会以 Content-Type:text/plain 的响应头发送,浏览器会将其渲染为纯文本。
    这是出于安全考虑——需要渲染的其他文件类型应托管在应用外部。

  • Streamlit 还会为从 static 目录渲染的所有文件设置 X-Content-Type-Options:nosniff 响应头。

  • 对于部署在 Streamlit Community Cloud 的应用:

    • GitHub 仓库中存在的文件始终可被访问。任何在应用运行过程中生成的文件(如用户上传的文件等),
      无法保证在会话之间持久存在。
    • 如果应用存储并提供大量文件或大文件,可能会触及资源限制而被关闭。

使用示例

  • 将图片 cat.png 放入 ./static/ 文件夹
  • .streamlit/config.toml[server] 部分添加 enableStaticServing = true
  • ./static/ 文件夹中的任何媒体文件都可以通过相对 URL 如 app/static/cat.png 被访问
# .streamlit/config.toml
[server]
enableStaticServing = true
# app.py
import streamlit as st

with st.echo():
    st.title("CAT")
    st.markdown("[![点我](app/static/cat.png)](https://streamlit.io)")

更多资源

仍有疑问?

我们的 论坛 汇聚了大量有用信息和 Streamlit 专家。

posted @ 2025-07-18 18:15  GOKORURI  阅读(369)  评论(0)    收藏  举报