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

StreamLit上传文件保存至临时目录报错求解决方案

如何将Streamlit上传的文件保存到临时目录

Streamlit的UploadedFile对象没有内置的save()方法,你需要手动读取文件内容并写入到临时目录中,以下是可行的实现代码:

import tempfile
import streamlit as st

# 创建临时目录
temp_dir = tempfile.TemporaryDirectory()
st.write(f"临时目录路径: {temp_dir.name}")

uploaded_file = st.file_uploader("上传文件")

if uploaded_file is not None:
    # 拼接临时文件的完整路径,保留原文件名避免冲突
    temp_file_path = f"{temp_dir.name}/{uploaded_file.name}"
    
    # 读取上传文件的二进制内容并写入临时文件
    with open(temp_file_path, "wb") as f:
        f.write(uploaded_file.getbuffer())
    
    st.success(f"文件已保存到: {temp_file_path}")
    # 后续代码可以直接使用temp_file_path访问这个文件

关键说明

  • 使用uploaded_file.getbuffer()获取上传文件的二进制数据,这是Streamlit上传文件对象提供的读取方法
  • 手动拼接临时文件路径,结合临时目录和原文件名,避免不同上传文件的命名冲突
  • 用Python标准的文件写入操作完成保存,这样其他代码逻辑就能通过temp_file_path访问已保存的文件

拓展:处理多文件上传

如果需要支持同时上传多个文件,只需修改file_uploader的参数并遍历处理:

uploaded_files = st.file_uploader("上传多个文件", accept_multiple_files=True)

if uploaded_files:
    for file in uploaded_files:
        temp_file_path = f"{temp_dir.name}/{file.name}"
        with open(temp_file_path, "wb") as f:
            f.write(file.getbuffer())
        st.success(f"文件 {file.name} 已保存")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:03:10