表单组件版本 0.1.0

FileUpload 文件上传

选择或拖放本地文件,并展示队列、进度、错误与移除操作。

使用概览

适合使用

  • 用户需要上传一个或多个文件且必须了解每项处理状态时。

不建议使用

  • 只需要输入现有文件网址,或应用无法提供真实上传传输逻辑时。

真实示例

PDF 文件上传

限制 PDF 类型并把选中文件交给调用方队列。

正在加载示例…

安装

本地候选警告Registry 地址仅指向当前本地文档站;npm 包也只用于本地候选验证,尚未公开发布。
pnpm dlx shadcn@4.16.0 add http://127.0.0.1:3000/r/file-upload.json

基础用法

导入

import { FileUpload } from "@richardqiu/quartz/file-upload";

JSX

<FileUpload accept="application/pdf" browseLabel="选择 PDF 文件" items={[]} maxFiles={3} onFilesSelected={() => undefined} removeLabel={(item) => `移除 ${item.name}`} />

状态与控制摘要

默认
悬停
键盘焦点可见
加载中
错误
已禁用
label · textactive · boolean

API 参考

属性类型默认值说明
itemsreadonly FileUploadItem[]必填由调用方提供每个文件的名称、大小与上传状态。
onFilesSelected(files: readonly File[]) => void必填把通过校验的本地文件交给调用方上传逻辑。

组合结构

  1. 01FileUpload

键盘约定

  • Enter 或空格键打开原生文件选择器,Tab 访问重试与移除操作。

可访问性契约

  • 每个受控文件都暴露进度和错误。
  • 被拒文件给出稳定的类型、大小或数量原因。