Skip to Content

FileButton

Open file picker with a button click.

Import

import { FileButton } from '@tidbcloud/uikit'

Usage

import { useState } from 'react' import { FileButton, Button, Group, Text } from '@tidbcloud/uikit' function Demo() { const [file, setFile] = useState<File | null>(null) return ( <> <Group justify="center"> <FileButton onChange={setFile} accept="image/png,image/jpeg"> {(props) => <Button {...props}>Upload image</Button>} </FileButton> </Group> {file && ( <Text size="sm" ta="center" mt="sm"> Picked file: {file.name} </Text> )} </> ) }

Multiple files

Set multiple prop to allow picking multiple files:

import { useState } from 'react' import { FileButton, Button, Group, Text } from '@tidbcloud/uikit' function Demo() { const [files, setFiles] = useState<File[]>([]) return ( <> <Group justify="center"> <FileButton onChange={setFiles} accept="image/png,image/jpeg" multiple> {(props) => <Button {...props}>Upload images</Button>} </FileButton> </Group> {files.length > 0 && ( <Text size="sm" mt="sm"> Picked files: </Text> )} <ul> {files.map((file, index) => ( <li key={index}>{file.name}</li> ))} </ul> </> ) }

Reset file

resetRef can be used to reset file input value:

import { useState, useRef } from 'react' import { FileButton, Button, Group, Text } from '@tidbcloud/uikit' function Demo() { const [file, setFile] = useState<File | null>(null) const resetRef = useRef<() => void>(null) const clearFile = () => { setFile(null) resetRef.current?.() } return ( <> <Group justify="center"> <FileButton resetRef={resetRef} onChange={setFile} accept="image/png,image/jpeg"> {(props) => <Button {...props}>Upload image</Button>} </FileButton> <Button disabled={!file} color="red" onClick={clearFile}> Reset </Button> </Group> {file && ( <Text size="sm" ta="center" mt="sm"> Picked file: {file.name} </Text> )} </> ) }

Disabled state

Set disabled prop to prevent file picker from opening:

<FileButton onChange={setFile} disabled> {(props) => <Button {...props}>Disabled upload</Button>} </FileButton>

Props

PropTypeDefaultDescription
onChange(files: File | File[] | null) => void-Called when files are picked
acceptstring-Accepted file types
multiplebooleanfalseAllow multiple file selection
disabledbooleanfalseDisable file picker
capture’user’ | ‘environment’-Capture attribute for mobile
resetRefReact.ForwardedRef<() => void>-Ref to reset function
children(props) => ReactNode-Render prop function
namestring-Input name attribute
formstring-Form id attribute
inputPropsobject-Props spread to hidden input
Last updated on