『玩转Streamlit』--上传下载文件

在Web应用领域,文件的上传与下载功能是用户交互中不可或缺的一环。它们不仅涉及文字交流,还涵盖了资料和图片的交换,是日常工作和生活中常见的需求。例如,用户可以通过文件上传功能向服务器提交图片以分享生活点滴,或提交文档以促进工作协作,从而丰富应用的功能。相对地,文件下载功能则允许用户从服务器获取资源,如下载软件、报告等,这不仅提升了用户获取应用内容的能力,也增强了用户体验和应用的实用性。

本文将探讨如何在Streamlit应用中实现文件的上传和下载功能。

1. 文件上传:使用st.file_uploader

Streamlit通过st.file_uploader提供了一个便捷的文件上传功能,它具备以下特点:

  1. 本地文件选择:用户可以通过这个组件选择并上传本地文件。
  2. 文件类型限制:可以指定允许上传的文件扩展名。
  3. 多文件上传支持:用户可以选择并上传多个文件。

st.file_uploader的主要参数如下:

参数名称 类型 描述
label str 简短标签,说明文件上传的目的
type [str] 允许上传的文件扩展名列表
accept_multiple_files bool 是否允许上传多个文件
key str 组件的唯一标识符
help str 上传文件时的提示信息
on_change func 文件上传时触发的回调函数
args tuple 传递给回调函数的参数元组
kwargs dict 传递给回调函数的参数字典
label_visibility str 标签的可见性设置

label_visibility参数与label一起使用,有三种可能的值:

  1. visible:默认值,正常显示label
  2. hidden:显示为空占位符。
  3. collapsed:不显示标签或占位符。

label参数支持Markdown格式,使得标签内容更加丰富和多样化。

以下是st.file_uploader的基本使用示例:

1.1. 基本使用

以下示例展示了如何创建一个文件上传组件,并在用户上传文件后显示文件名。

import streamlit as st

uploaded_file = st.file_uploader("选择文件:")
if uploaded_file is not None:
    st.write(uploaded_file.name)
文件上传示例

1.2. 上传大小限制

Streamlit默认允许上传的文件大小限制为200MB。若需调整此限制,可以通过修改server.maxUploadSize配置项实现。

例如,若要将上传文件大小限制设置为500MB,可在Streamlit的配置文件config.toml中添加以下配置:

[server]
maxUploadSize = 500

1.3. 允许的文件类型

通过type参数,可以指定允许上传的文件类型。以下示例展示了如何仅允许上传图片文件(png和jpg格式):

import streamlit as st

uploaded_file = st.file_uploader("选择图片文件", type=["png", "jpg"])

1.4. 上传多个文件

若需允许用户上传多个文件,可将accept_multiple_files参数设置为True。以下示例展示了如何实现:

import streamlit as st

uploaded_files = st.file_uploader("选择多个文件:", accept_multiple_files=True)
for uploaded_file in uploaded_files:
    st.write(uploaded_file.name)

1.5. 文件上传后的回调

上传文件后,可以对文件进行多种处理,如读取文件内容、保存文件到本地或使用文件数据进行计算等。以下示例展示了如何读取上传的CSV文件并显示其数据:

import streamlit as st
import pandas as pd

uploaded_file = st.file_uploader("选择 CSV 文件:")
if uploaded_file is not None:
    dataframe = pd.read_csv(uploaded_file)
    st.write(dataframe)

2. 文件下载:使用st.download_button

在Streamlit中,通常使用st.download_button来实现文件下载功能。当用户点击下载按钮时,可以将指定的文件内容下载到本地设备,这在许多场景中都非常实用,如让用户下载数据报表、图片、文档等。

st.download_button的主要参数如下:

参数名称 类型 描述
label str 简短标签,说明文件下载的目的
版权声明:程序员胖胖胖虎阿 发表于 2024年12月28日 上午1:17。
转载请注明:『玩转Streamlit』--上传下载文件 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...