You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Streamlit应用的图片存储从本地切换至deta.sh数据库?

解决Streamlit应用X光影像存储到Deta.sh的方案

Deta提供专门的Drive存储服务用于存放文件(而非数据库),可以直接替换本地存储逻辑,步骤如下:

1. 安装Deta SDK

执行命令安装Deta的Python SDK:

pip install deta

2. 初始化Deta Drive

首先在Deta控制台获取你的项目密钥,然后在代码中初始化存储桶:

from deta import Deta
import streamlit as st
from PIL import Image
import tempfile
import os

# 从Streamlit Secrets读取密钥(推荐),或者直接替换为你的密钥
deta = Deta(st.secrets["DETA_KEY"])
# 创建/获取名为xray_images的存储桶
xray_drive = deta.Drive("xray_images")

3. 修改上传与存储逻辑

替换原代码中的本地存储部分,改为上传到Deta Drive,同时保留图片处理逻辑:

uploaded_file = st.file_uploader("Choose an image...", type=["jpg","png","jpeg"])
if uploaded_file is not None:
    # 显示处理后的图片
    img = Image.open(uploaded_file).resize((255,255))
    st.image(img, use_column_width=False)
    
    # 上传文件到Deta Drive
    file_name = uploaded_file.name
    xray_drive.put(file_name, uploaded_file.getbuffer())
    
    # 若processed_img需要本地文件路径,使用临时文件处理
    with tempfile.NamedTemporaryFile(delete=False, suffix=file_name.split('.')[-1]) as tmp_file:
        tmp_file.write(uploaded_file.getbuffer())
        tmp_file_path = tmp_file.name
    
    # 执行模型预测
    result = processed_img(tmp_file_path)
    
    # 删除临时文件
    os.unlink(tmp_file_path)
    
    # 显示预测结果
    if result == "yes":
        st.success(result)
    else:
        st.error(result)

注意事项

  • 密钥安全:不要将Deta密钥硬编码在代码中,建议使用Streamlit的st.secrets管理,在项目根目录创建.streamlit/secrets.toml文件,写入DETA_KEY = "你的项目密钥"
  • 变量修正:原代码中result == yes会报错,需改为result == "yes"(字符串形式)
  • 文件读取:后续若需读取已存储的图片,可使用xray_drive.get(file_name)获取文件内容

内容的提问来源于stack exchange,提问作者Akash Kachhaway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 08:22:48