SuperAPI AI 工具集

better-upload

前端与建站

查看项目

更新于 10-15 22:39

技能介绍

Better Upload 用于在 React 或 Next.js 应用中添加文件上传功能,核心是通过预签名 URL 让浏览器直接把文件上传到任意 S3 兼容存储,服务端只负责生成临时签名地址,不代理文件流。架构为:浏览器先 POST 到 /api/upload,由你的服务端生成预签名 URL,浏览器再 PUT 该签名地址上传到 S3 存储桶(如 AWS、R2、MinIO 等)。包含两个包:@better-upload/server 提供路由、路由定义、S3 客户端与对象操作辅助;@better-upload/client 提供 React hooks(useUploadFiles、useUploadFile)及命令式上传函数。安装命令为 npm i @better-upload/server @better-upload/client。服务端可在 Next.js App Router 中定义 router(含 client、bucketName、routes),用 route() 设置 multipleFiles、fileTypes、maxFileSize、maxFiles 等,并通过 toRouteHandler 导出 POST;客户端用 useUploadFiles 指定与服务端同名的 route 发起上传,默认 API 端点为 /api/upload,可用 api 选项覆盖。支持 onBeforeUpload、onAfterSignedUrl 回调、RejectUpload、多部分上传、Next.js 与 Node.js 适配器、多种 S3 客户端(读取环境变量);客户端提供 onUploadBegin、onUploadProgress、onUploadComplete、onUploadFail、onError、onUploadSettle 等事件,以及命令式上传函数和预置 shadcn 组件。服务端 helpers 包括 presignGetObject、getObject、headObject、listObjectsV2、putObject、deleteObject、deleteObjects、moveObject、copyObject、对象标签与底层多部分辅助,客户端另有 formatBytes。示例涵盖多路由服务端配置、认证与访问控制、单文件上传、客户端元数据与 Zod 校验、TanStack Query 集成、Dropzone 组件、取消上传、删除文件与 CORS 配置。限制:需自备 S3 兼容存储并正确配置 CORS;收费、价格与平台支持等资料暂未提供。