显示一个文件上传器小部件。

默认情况下,上传的文件大小限制为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.markdownbody参数。

出于可访问性原因,您永远不应设置空标签,但您可以使用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)

  • 如果 accept_multiple_files 为 False,则返回 None 或一个 UploadedFile 对象。
  • 如果 accept_multiple_files 为 True,则返回一个包含上传文件的列表,这些文件作为 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)
forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。