ReboFiles文档
开始3
什么是 ReboFiles
快速开始
可运行的演示
集成到你的应用6
React 组件
Headless:你自己的界面
不使用框架
样式与主题
键盘与无障碍
语言
文件9
上传
预览与查看器
搜索
实时更改与大文件夹
评论
星标与字段
版本、回收站与空间
打包下载 .zip
Word 文档
服务器14
路由
框架与登录
谁可以做什么
存储:S3、GCS、Azure 与磁盘
检查上传
元数据:SQLite 与 Postgres
数据库结构
共享与链接
动态与通知
钩子、日志与限制
保留、法律保留与导出
桌面端与其他来源
同步文件夹
上线生产环境
协作1
AI 助手(MCP)
参考5
包
组件与 hooks
客户端 API
HTTP 路由
状态与路线图
↑↓ 移动↵ 打开Esc 关闭38 个页面

文件 上传

上传

可以通过按钮、拖放文件,或上传电脑上的整个文件夹。浏览器把文件内容直接发送到存储桶;服务器只负责签名目标地址、检查到达的内容并将其列出。

提示:把整个文件夹拖到网盘上试试

原理

分片直传到存储桶

大于 8 MiB 的文件会分片上传,每个分片发送到按其确切长度签名的地址,同时上传若干个。

  • POST /uploads 告诉页面每个分片发往哪里;分片发送到存储桶;POST /uploads/finish 将它们合并,服务器在列出文件之前会检查到达的大小。
  • 失败的分片会从已到达的位置重试,最多五次,每次等待时间更长。文件最大 5 GiB,除非 maxSize 另有设定。
  • 存储桶必须在跨域规则中暴露 ETag:页面从每个分片读取它,服务器需要它来合并分片。
进度

上传面板

同时上传三个文件;每个都显示已上传多少、速度和剩余时间,全部文件的汇总也一样。

可以停止某个文件,已到达的部分会被清除;失败的文件会从已到达的位置重试。速度取最近几秒的平均值,因此剩余时间能跟上变化,又不会随每次波动跳动。

const { uploads, summary } = useUploads({ check: true });
// summary.remaining: seconds until all are up, at the speed all go at together
// uploads[i].remaining: the same, of one
续传

断点续传

被中断的上传,或关闭页面时未完成的上传,在把同一文件再次上传到同一位置时,会从中断处继续。

// A file cut halfway, or left when the page closed, is uploaded again:
await client.upload(file, { parent });  // asks the server what arrived, sends the rest

页面会在 localStorage 中记住它一天,只要服务器还保留着这些分片。从未继续的上传会留在存储桶中,等待生命周期规则清理(“1 天后中止未完成的分片上传”)。

文件夹

整个文件夹

拖放到网盘上,或通过“上传文件夹”选择,文件夹会连同其中所有内容一起上传:子文件夹自上而下创建,空文件夹也会创建,名称冲突时加上 “(2)”。

重复

重复文件的询问

每个文件上传前,都会先在网盘中查找。

发现询问
在自己可读的任何位置有相同内容仍然上传,或跳过。
目标位置已有同名文件替换(作为它的新版本)、两者都保留(“(2)”),或跳过。

内容通过页面中计算的 SHA-256 判断(适用于 64 MiB 以内的文件),并随版本保存(由 POST /duplicates 查找)。“对其余文件执行相同操作”会一次性回答同类的所有文件。checkUploads={false} 则直接上传,不再询问。

之后

随文件一起发送的内容

在页面中生成,并在文件之后发送;无论它们是否送达,文件本身都已上传完成。

  • 图片:按网盘设置生成四种尺寸的副本,以及几像素大小的占位图。见预览。
  • 文本文件或 Word 文档:其中的文字。见搜索。