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

文件 预览与查看器

预览与查看器

详情中以小尺寸显示文件;双击或按 Enter 会在网盘之上完整显示,用 ← 和 → 切换到下一个。
类型

显示哪些内容

类型在详情中在查看器中
图片能填满区域的最小副本适应窗口,点击查看实际大小
Word 文档标题和开头几段,或第一页逐页或全部显示;Rebodocs 的缩放;打印
PDF由浏览器显示第一页浏览器自带的查看器
视频、音频—播放
Excel 工作簿(.xlsx)卡片上显示前几行每个工作表显示为表格
文本、Markdown、CSV、JSON、代码开头部分完整显示,有大小上限
副本

四种尺寸的图片

上传图片时,页面会按网盘设置中的尺寸生成副本,除非设置为保留原格式,否则使用 JPEG;原图保持原样。

createDriveHandler({
  ...options,
  // Or from the settings of the drive, under Pictures.
  settings: { images: { enabled: true, sizes: [160, 480, 1024, 2048], format: 'jpeg', quality: 0.85 } },
});

网格读取 160 或 480 的副本,详情读取 480,查看器读取 2048;download?size= 会返回在该尺寸下能显示图片的最小副本。

占位图

加载时先模糊显示

每张图片都有一个极小的副本,最长边 16 像素,以几百字节的 data: URL 形式随版本保存。网格、详情和查看器会在图片的位置下方以模糊方式显示它,直到图片加载完成。Word 文档的第一页也是如此。

缓存

有效期一小时的地址

用于在页面中显示文件的地址从整点开始签名,整个小时内保持相同,有效期两小时,并带有 Cache-Control: private, max-age=7200:浏览器会缓存已读取过的缩略图。网格通过一次请求(POST /urls)获取所有地址,过期的地址会重新获取。

derive

由服务器生成

不是来自页面的内容(助手、同步、脚本),以及页面不会生成的内容(PDF 的第一页):在保存后片刻由服务器生成。

import { createDriveHandler } from '@rebofiles/server';
import { deriveAll } from '@rebofiles/server/derive';

// npm install sharp pdfjs-dist @napi-rs/canvas   (each only for what it makes)
createDriveHandler({ ...options, derive: deriveAll() });
  • pictures():用 sharp 生成网盘各尺寸的图片(不会大于原图)及其占位图。
  • pdf():用 pdfjs-dist 和 @napi-rs/canvas 绘制 PDF 第一页,并提取前五十页的文字用于搜索。
  • docx()、xlsx() 和 text():用 Rebodocs 读取 Word 文档的文字,读取 Excel 工作簿的单元格,以及文本文件的文字。
  • video()(传给 deriveAll(…)):用 ffmpeg 截取视频的一帧,生成网盘的各个尺寸。

页面会说明自己生成了什么,服务器只生成其余部分;每个库在首次需要时才加载,因此只需安装用到的库。页面会根据事件显示新生成的内容。

OCR

图片中的文字

收据照片、扫描的合同:由 Tesseract 识别其中的文字后即可搜索。deriveAll() 默认不包含它,因为首次使用时会下载语言数据。

import { deriveAll, docx, ocr, pdf, pictures, text, xlsx } from '@rebofiles/server/derive';

// npm install tesseract.js   (the data of each language is fetched once, then kept)
createDriveHandler({
  ...options,
  derive: deriveAll(pictures(), pdf(), docx(), xlsx(), text(), ocr({ languages: ['eng', 'spa'] })),
});

ocr() 读取图片,以及没有文字层的 PDF 的前几页(在 pdf() 之后运行,有文字的 PDF 由 pdf() 读取)。langPath 和 cachePath 指定语言数据的来源和保存位置。