在Web应用领域,文件的上传与下载功能是用户交互中不可或缺的一环。它们不仅涉及文字交流,还涵盖了资料和图片的交换,是日常工作和生活中常见的需求。例如,用户可以通过文件上传功能向服务器提交图片以分享生活点滴,或提交文档以促进工作协作,从而丰富应用的功能。相对地,文件下载功能则允许用户从服务器获取资源,如下载软件、报告等,这不仅提升了用户获取应用内容的能力,也增强了用户体验和应用的实用性。
本文将探讨如何在Streamlit应用中实现文件的上传和下载功能。
1. 文件上传:使用st.file_uploader
Streamlit通过st.file_uploader
提供了一个便捷的文件上传功能,它具备以下特点:
- 本地文件选择:用户可以通过这个组件选择并上传本地文件。
- 文件类型限制:可以指定允许上传的文件扩展名。
- 多文件上传支持:用户可以选择并上传多个文件。
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
一起使用,有三种可能的值:
visible
:默认值,正常显示label
。hidden
:显示为空占位符。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 | 简短标签,说明文件下载的目的 |