Skip to main content

Callbacks

onClick

  • Description: Triggered when a file is clicked
  • Type: (file: FileContext) => void
const onClick = (file: FileContext) => {
console.log(file)
}

onChange

  • Description: Triggered when the file status changes
  • Type: (file: FileContext, fileList: FileContext[]) => void
const onChange = (file: FileContext, fileList: FileContext[]) => {
console.log(file, fileList)
}

onExceed

  • Description: Triggered when the file count limit is exceeded
  • Type: (slectedFiles: FileContext[], fileList: FileContext[]) => void
const onExceed = (slectedFiles: FileContext[], fileList: FileContext[]) => {
console.log(slectedFiles, fileList)
}

onFileAdded

  • Description: Triggered when a file is added
  • Type: (file: FileContext, fileList: FileContext[]) => void
const onFileAdded = (file: FileContext, fileList: FileContext[]) => {
console.log(file, fileList)
}

onFilesAdded

  • Description: Triggered when all files are added
  • Type: (fileList: FileContext[]) => void
const onFilesAdded = (fileList: FileContext[]) => {
console.log(fileList)
}

onRemoved

  • Description: Triggered when a file is removed
  • Type: (file: FileContext, fileList: FileContext[]) => void
const onRemoved = (file: FileContext, fileList: FileContext[]) => {
console.log(file, fileList)
}

onProgress

  • Description: Triggered when the file upload progress changes
  • Type: (file: FileContext, fileList: FileContext[], progress: number) => void
const onProgress = (file: FileContext, fileList: FileContext[]) => {
console.log(file.progress, fileList)
}

onUploaded

  • Description: Triggered when all chunks of a file are uploaded
  • Type: (file: FileContext, fileList: FileContext[]) => void
const onUploaded = (file: FileContext, fileList: FileContext[]) => {
console.log(file, fileList)
}

onSuccess

  • Description: Triggered when a file is successfully uploaded and merged
  • Type: (file: FileContext, fileList: FileContext[]) => void
const onSuccess = (file: FileContext, fileList: FileContext[]) => {
console.log(file, fileList)
}

onFail

  • Description: Triggered when a file upload fails, including add failure, upload failure, or merge failure
  • Type: (file: FileContext, fileList: FileContext[]) => void
const onFail = (file: FileContext, fileList: FileContext[]) => {
console.log(file, fileList)
}

onAllFilesSuccess

  • Description: Triggered when all files are successfully uploaded
  • Type: (fileList: FileContext[]) => void
const onAllFilesSuccess = (fileList: FileContext[]) => {
console.log(fileList)
}

Example

Live Editor
function Example() {
  const [defaultFileList, setDefaultFileList] = useState<DefaultFile[]>([])
  const baseUrl = 'https://tiny-uploader-server.vercel.app/file'

  const onPreview = (file: FileContext) => {
    console.log('onPreview', file.name, file.url)
  }

  const onChange = (file: FileContext) => console.log('onChange', file.status)

  const onExceed = (slectedFiles: FileContext[], fileList: FileContext[]) => {
    console.log('onExceed', slectedFiles, fileList)
  }

  const onFileAdded = (file: FileContext, fileList: FileContext[]) => {
    console.log('onFileAdded', file.name, fileList)
  }

  const onFilesAdded = (fileList: FileContext[]) => {
    console.log('onFilesAdded', fileList)
  }

  const onRemoved = (file: FileContext, fileList: FileContext[]) => {
    console.log('onRemoved', file.name, fileList)
  }

  const onProgress = (file: FileContext, fileList: FileContext[]) => {
    console.log('onProgress', file.name, file.progress, fileList)
  }

  const onUploaded = (file: FileContext, fileList: FileContext[]) => {
    console.log('onUploaded', file.name, fileList)
  }

  const onSuccess = (file: FileContext, fileList: FileContext[]) => {
    console.log('onSuccess', file.name, fileList)
  }

  const onFail = (file: FileContext, fileList: FileContext[]) => {
    console.log('onFail', file.name, fileList)
  }

  const onAllFilesSuccess = (fileList: FileContext[]) => {
    console.log('onAllFilesSuccess', fileList)
  }

  return (
    <>
      <Uploader
        defaultFileList={[
          {
            id: 1,
            name: 'default.png',
            url: 'https://baidu.com'
          }
        ]}
        options={{
          action: `${baseUrl}/upload`,
          limit: 3,
          async checkRequest(file: FileContext) {
            const params = new URLSearchParams({
              filename: file.name,
              hash: file.hash,
              status: 'none'
            }).toString()
            const response = await fetch(`${baseUrl}/check?${params}`)
            const { data } = await response.json()
            return data
          },
          async mergeRequest(file: FileContext) {
            const params = new URLSearchParams({
              filename: file.name,
              hash: file.hash
            }).toString()
            const response = await fetch(`${baseUrl}/merge?${params}`)
            const { data } = await response.json()
            return data
          }
        }}
        onClick={onPreview}
        onChange={onChange}
        onExceed={onExceed}
        onFileAdded={onFileAdded}
        onFilesAdded={onFilesAdded}
        onRemoved={onRemoved}
        onProgress={onProgress}
        onUploaded={onUploaded}
        onSuccess={onSuccess}
        onFail={onFail}
        onAllFilesSuccess={onAllFilesSuccess}
      ></Uploader>
    </>
  )
}
Result
Loading...