显示一个文件上传器小部件。
默认情况下,上传的文件大小限制为200MB。您可以使用server.maxUploadSize配置选项来配置此限制。有关如何设置配置选项的更多信息,请参阅https://docs.streamlit.io/develop/api-reference/configuration/config.toml
函数签名[source] | |
---|---|
st.file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible") | |
参数 | |
label (str) | 一个简短的标签,向用户解释这个文件上传器的用途。 标签可以选择性地包含以下类型的GitHub风格的Markdown:粗体、斜体、删除线、内联代码、链接和图片。图片显示为图标,最大高度等于字体高度。 不支持的Markdown元素会被解包,因此只有它们的子元素(文本内容)会呈现。通过反斜杠转义不支持的元素,将其显示为字面字符。例如, "1\. 不是一个有序列表"。 有关其他支持的Markdown指令,请参见st.markdown的body参数。 出于可访问性原因,您永远不应设置空标签,但您可以使用label_visibility隐藏它(如果需要)。将来,我们可能会通过引发异常来禁止空标签。 |
type (str or list of str or None) | 允许的扩展名数组。['png', 'jpg'] 默认值为None,这意味着允许所有扩展名。 |
accept_multiple_files (bool) | 如果为True,允许用户同时上传多个文件, 在这种情况下,返回值将是一个文件列表。 默认值:False |
key (str or int) | 一个可选的字符串或整数,用作小部件的唯一键。 如果省略,将根据小部件的内容生成一个键。 任何两个小部件都不能有相同的键。 |
help (str) | 一个可选的小提示,显示在小部件标签旁边。 只有当label_visibility="visible"时,Streamlit才会显示这个小提示。 |
on_change (callable) | 当此文件上传器的值发生变化时调用的可选回调函数。 |
args (tuple) | 传递给回调函数的可选参数元组。 |
kwargs (dict) | 一个可选的字典,用于传递给回调函数。 |
disabled (bool) | 一个可选的布尔值,如果设置为True,则禁用文件上传器。默认值为False。 |
label_visibility ("visible", "hidden", or "collapsed") | 标签的可见性。默认是"visible"。如果这是"hidden",Streamlit会显示一个空白的间隔符而不是标签,这有助于保持小部件与其他小部件对齐。如果这是"collapsed",Streamlit不会显示标签或间隔符。 |
返回 | |
(None or UploadedFile or list of UploadedFile) |
UploadedFile 类是 BytesIO 的子类,因此它是“类文件”的。这意味着你可以在任何需要文件的地方传递它的实例。 |
示例
插入一个每次只接受单个文件上传的文件上传器:
import streamlit as st import pandas as pd from io import StringIO uploaded_file = st.file_uploader("Choose a file") if uploaded_file is not None: # To read file as bytes: bytes_data = uploaded_file.getvalue() st.write(bytes_data) # To convert to a string based IO: stringio = StringIO(uploaded_file.getvalue().decode("utf-8")) st.write(stringio) # To read file as string: string_data = stringio.read() st.write(string_data) # Can be used wherever a "file-like" object is accepted: dataframe = pd.read_csv(uploaded_file) st.write(dataframe)插入一个文件上传器,可以一次接受多个文件:
import streamlit as st uploaded_files = st.file_uploader( "Choose a CSV file", accept_multiple_files=True ) for uploaded_file in uploaded_files: bytes_data = uploaded_file.read() st.write("filename:", uploaded_file.name) st.write(bytes_data)
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。