使用高级 Chakra UI 组件,更快地构建应用程序 💎

了解更多
跳到内容
文档演练场指南博客
赞助商

文件上传

用于从设备中选择和上传文件。

源码Storybook配方Ark

    用法

    import { FileUpload } from "@chakra-ui/react"
    <FileUpload.Root>
      <FileUpload.HiddenInput />
      <FileUpload.Label />
      <FileUpload.Dropzone>
        <FileUpload.DropzoneContent />
      </FileUpload.Dropzone>
      <FileUpload.Trigger />
      <FileUpload.ItemGroup>
        <FileUpload.Item>
          <FileUpload.ItemPreview />
          <FileUpload.ItemFileName />
          <FileUpload.ItemSizeText />
          <FileUpload.ItemDeleteTrigger />
        </FileUpload.Item>
      </FileUpload.ItemGroup>
    </FileUpload.Root>

    快捷方式

    FileUpload 组件还提供了一组常用快捷方式。

    FileUploadItems

    默认情况下,FileUploadItems 快捷方式渲染已上传文件的列表。

    这样可行

    <FileUpload.ItemGroup>
      <FileUpload.Context>
        {({ acceptedFiles }) =>
          acceptedFiles.map((file) => (
            <FileUpload.Item key={file.name} file={file}>
              <FileUpload.ItemPreview />
              <FileUpload.ItemName />
              <FileUpload.ItemSizeText />
              <FileUpload.ItemDeleteTrigger />
            </FileUpload.Item>
          ))
        }
      </FileUpload.Context>
    </FileUpload.ItemGroup>

    如果您不需要自定义文件上传项,这可能会更简洁。

    <FileUpload.ItemGroup>
      <FileUpload.Items />
    </FileUpload.ItemGroup>

    FileUploadList

    FileUploadList 快捷方式渲染已上传文件的列表。它由 FileUpload.ItemGroupFileUpload.Items 组件组成。

    <FileUpload.List />

    等同于

    <FileUpload.ItemGroup>
      <FileUpload.Items />
    </FileUpload.ItemGroup>

    示例

    接受的文件

    使用 accept 属性定义接受上传的文件类型。

      多个文件

      使用 maxFiles 属性一次上传多个文件。

        自定义预览

        以下是为文件显示自定义图像预览的示例。

        目录

        使用 directory 属性允许选择目录而不是文件。

          媒体捕获

          使用 capture 属性从不同环境和媒体类型中选择和上传文件。

          注意: 并非所有浏览器都完全支持此功能。

            拖放区

            将多个文件拖放到拖放区内,并使用 maxFiles 属性设置一次可上传的文件数量。

            将文件拖放到此处
            .png, .jpg,最大5MB

              输入框

              使用 FileInput 组件创建一个看起来像文本输入框的触发器。

              可清空

              以下是可清空文件上传输入框的示例。

              粘贴文件

              以下是处理从剪贴板粘贴的文件的示例。

              Store

              控制文件上传的另一种方法是使用 RootProvider 组件和 useFileUpload store hook。

              这样,您就可以在文件上传组件外部访问文件上传的状态和方法。

              已接受已拒绝

                属性

                属性默认值类型
                allowDrop true
                布尔值

                是否允许在拖放区元素中进行拖放

                locale '\'en-US\''
                字符串

                当前语言环境。基于 BCP 47 定义。

                maxFiles '1'
                数字

                最大文件数量

                maxFileSize 'Infinity'
                数字

                最大文件大小(字节)

                minFileSize '0'
                数字

                最小文件大小(字节)

                preventDocumentDrop true
                布尔值

                是否阻止在文档上发生拖放事件

                accept
                Record<string, string[]> | FileMimeType | FileMimeType[]

                接受的文件类型

                asChild
                布尔值

                使用提供的子元素作为默认渲染元素,结合其属性和行为。

                更多详情,请阅读我们的 组合 指南。
                capture
                'user' | 'environment'

                捕获媒体时使用的默认摄像头

                directory
                布尔值

                是否接受目录,仅在 webkit 浏览器中有效

                disabled
                布尔值

                文件输入是否禁用

                ids
                Partial<{ root: string dropzone: string hiddenInput: string trigger: string label: string item(id: string): string itemName(id: string): string itemSizeText(id: string): string itemPreview(id: string): string }>

                元素的 ID。用于组合很有用。

                invalid
                布尔值

                文件输入是否无效

                name
                字符串

                底层文件输入框的名称

                onFileAccept
                (details: FileAcceptDetails) => void

                文件被接受时调用的函数

                onFileChange
                (details: FileChangeDetails) => void

                值更改时(无论接受或拒绝)调用的函数

                onFileReject
                (details: FileRejectDetails) => void

                文件被拒绝时调用的函数

                required
                布尔值

                文件输入是否必需

                translations
                IntlTranslations

                要使用的本地化消息。

                validate
                (file: File, details: FileValidateDetails) => FileError[] | null

                验证文件的函数

                as
                React.ElementType

                要渲染的底层元素。

                unstyled
                布尔值

                是否移除组件的样式。

                上一页

                Fieldset

                下一页

                Hover Card