r2-web

vikibossMIT活跃维护

纯浏览器运行的 Cloudflare R2 文件管理器,无需后端即可上传、预览、压缩图片和分享文件,轻量优雅。

📁 轻盈优雅的 Web 原生 Cloudflare R2 桶文件管理器,一切皆在浏览器中完成。 | 📁 A lightweight, elegant, pure-browser Cloudflare R2 file manager. Everything happens right in your browser.

v1.13.1发布于 2026-09-15 03:45 UTC498star103fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/vikiboss/r2-web.git
cd r2-web
pnpm install
npx serve src
硬件要求按 README 说明

README 未说明;纯浏览器运行,支持最新版 Chrome、Edge、Firefox、Safari,不支持 IE

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

纯浏览器直连 Cloudflare R2 的静态文件管理器,补上控制台批量操作的低效

纯浏览器运行的 Cloudflare R2 文件管理器,无需后端即可上传、预览、压缩图片和分享文件,轻量优雅。

核心能力

  • 浏览器直接调用 R2 S3 API,无中转服务器
  • 自动分片上传,支持暂停继续与并发,最大 1 TiB
  • 目录浏览、预览、排序与批量复制移动重命名递归删除
  • 文件名模板支持哈希、日期、UUID 与目录规则
  • 本地 WebAssembly 压缩图片并复制 Markdown/HTML 链接

容易踩的坑

必须先给 R2 桶配置 CORS 并暴露 ETag,否则分片上传会失败;凭证只存在浏览器 localStorage,分享配置链接会包含访问凭证,勿公开传播;私有部署后要把新域名加入 CORS 的 AllowedOrigins

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.13.1
  1. v1.13.1最新正式版2026-09-15 · 2026-09-15 03:45 UTC

       🐞 问题修复

    • 修复图片复制失败问题  -  by @vikiboss (b0f9b)

       🧹 杂项

    • Release v1.13.1  -  by @vikiboss (be03a)
        View changes on GitHub
  2. v1.13.02026-09-15 · 2026-09-15 03:16 UTC
    查看更新说明

       🚀 新功能

    • 支持分片上传,单文件最大支持 1TB,支持取消上传,优化进度条、UI,支持清理已上传的零散分片文件  -  by @vikiboss (83653)

       🧹 杂项

    • 更换压缩代理 & 修复额度问题  -  by @vikiboss (72806)
    • Release v1.13.0  -  by @vikiboss (57416)
        View changes on GitHub
  3. v1.12.32026-05-19 · 2026-05-19 06:55 UTC
    查看更新说明

       🐞 问题修复

    • 修复底部 Ctrl V 粘贴提示错位问题  -  by @vikiboss (4d651)
    • 修复目录项大于 200 时分页导致的目录显示问题 & 支持全量加载  -  by @vikiboss (4c29b)

       🧹 杂项

    • 优化上传提示文案和状态显示  -  by @vikiboss (8664e)
    • 更新文档  -  by @vikiboss (b7f8c)

       📚 文档

    • 简化 CLAUDE.md  -  by @vikiboss (f7a6e)
        View changes on GitHub
  4. v1.12.22026-05-11 · 2026-05-11 03:11 UTC
    查看更新说明

       🐞 问题修复

    • 修复快速刷新、加载等请求竞态场景下导致的「文件列表显示错误」的问题  -  by @vikiboss (21f1a)
        View changes on GitHub
  5. v1.12.12026-04-24 · 2026-04-24 08:35 UTC
    查看更新说明

       🐞 问题修复

    • 修复大文件列表下的工具栏跟随滚动问题  -  by @vikiboss (6bb55)
        View changes on GitHub

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    93c1205d.png

    中文 | English

    R2 Web

    📁 轻盈优雅的 Web 原生 Cloudflare R2 文件管理器,一切皆在浏览器中完成。

    本项目曾被 《科技爱好者周刊(第 387 期)》 和 《HelloGitHub(第 123 期)》 推荐。

    在线使用

    按 快速开始 配置 R2 CORS,然后访问 r2.viki.moe。凭证只保存在浏览器本地。

    为什么做 R2 Web?

    Cloudflare 控制台适合基础操作,但大量文件的浏览、移动、重命名和临时上传并不高效;桌面客户端需要安装,CLI 又不适合所有人。R2 Web 希望补上一个随开随用、跨平台且专注 R2 的管理界面。

    差异化优势

    优势说明
    纯客户端直连浏览器直接调用 R2 S3 API,没有中转服务器,文件和凭证不经过第三方后端
    零构建、零框架src 即部署产物,基于原生 Web API,便于审计、修改和私有部署
    大文件体验自动分片,支持暂停/继续、实时速度和大小进度,最大支持 1 TiB
    专注文件管理目录浏览、预览、排序、批量选择,以及复制、移动、重命名、递归删除
    图床友好拖拽/粘贴上传、文件名模板、本地图片压缩、Markdown/HTML 链接复制
    跨平台体验PWA、深色模式和 zh / zh_TW / en / ja 多语言支持

    R2 Web 不替代复杂权限管理、自动化脚本或 API 集成;这些场景建议使用 Cloudflare 控制台、官方 SDK、CLI 或 rclone。

    功能速览

    类别能力
    浏览与管理分页目录、懒加载缩略图、名称/日期/大小排序、批量复制/移动/删除
    分片上传选择、拖拽、粘贴;并发上传;自动分片;暂停/继续;冲突处理
    文件名模板[name]、[ext]、[hash:N]、日期、时间戳、UUID 和目录模板
    图片压缩JPEG、PNG、WebP、AVIF 本地 WebAssembly 压缩,也可选 Tinify
    预览与分享图片、视频、音频、文本预览;直链、二维码、Markdown、HTML 格式
    个性化网格/列表、显示密度、浅色/深色主题、多语言、PWA

    界面截图

    9392ee.png

    ea7dd6.png

    快速开始

    1. 配置 R2 桶 CORS

    在 Cloudflare 控制台进入 R2 → 存储桶 → 设置 → CORS 策略:

    [
      {
        "AllowedOrigins": ["https://r2.viki.moe"],
        "AllowedMethods": ["GET", "POST", "PUT", "DELETE", "HEAD"],
        "AllowedHeaders": ["*"],
        "ExposeHeaders": ["ETag"],
        "MaxAgeSeconds": 86400
      }
    ]
    

    私有部署时,将 AllowedOrigins 替换为自己的域名。ETag 是完成分片上传所必需的响应头。

    2. 创建并填写凭证

    创建权限限定到目标 bucket 的 R2 API Token,在 r2.viki.moe 填写 Account ID、Access Key ID、Secret Access Key 和 Bucket Name。

    3. 开始管理

    拖拽、粘贴或点击上传;右键文件可预览、复制链接、移动、重命名或删除。作为图床使用时,建议启用文件名模板和图片压缩。

    私有部署

    R2 Web 是静态站点,部署仓库中的 src 目录即可。

    平台一键部署
    VercelDeploy with Vercel
    NetlifyDeploy to Netlify
    Cloudflare PagesDeploy to Cloudflare

    部署完成后,请将新域名加入 R2 CORS 的 AllowedOrigins。

    常用配置

    文件名模板

    • [name]_[hash:6].[ext] — 原文件名 + 内容哈希
    • images/[date:YYYY/MM/DD]/[uuid].[ext] — 按日期组织目录
    • backup/[timestamp]-[name].[ext] — 时间戳备份文件名

    配置分享

    可以生成配置分享链接或二维码,在设备间快速同步设置。

    [!CAUTION] 分享内容包含 R2 访问凭证。仅通过可信渠道传递,不要发布到公开平台。

    本地开发

    git clone https://github.com/vikiboss/r2-web.git
    cd r2-web
    pnpm install
    
    npx serve src
    # 或
    python3 -m http.server 5500 --directory src
    

    项目不需要构建;依赖主要用于浏览器 Import Maps 和本地类型检查。开发约定见 AGENTS.md。

    FAQ

    凭证安全吗? 凭证仅存储在浏览器 localStorage,请求直接发送到 R2。仍建议使用限定 bucket 和最小权限的 API Token。

    支持哪些浏览器? 支持最新版 Chrome、Edge、Firefox 和 Safari,不支持 IE。

    图片压缩在哪里进行? 本地模式使用 WebAssembly 在浏览器内完成;选择 Tinify 时,图片会发送到 Tinify 服务。

    为什么上传失败? 检查凭证、bucket 权限和 CORS。分片上传要求允许 POST / PUT / DELETE 并暴露 ETag;单文件不能超过 1 TiB。

    反馈

    License

    MIT License