文件中转站(File Transfer)

Web

概要

Cloudflare Workers と R2 をベースにしたファイル共有サービス「文件中转站 / File Transfer」のリポジトリです。大容量ファイル(最大100GB)を扱えるよう分割(チャンク)アップロードをサポートし、100MB を超えるファイルは自動的に分片アップロードされます。パスワード保護、期限付きの自動削除、ダウンロード用の短時間有効な署名付きリンク(5分)や QR コード生成、並列アップロードなど実用的な機能を備え、Cloudflare のエッジで完結する軽量なファイル中継(転送)サービスを実現します。

GitHub

リポジトリの統計情報

  • スター数: 32
  • フォーク数: 7
  • ウォッチャー数: 32
  • コミット数: 4
  • ファイル数: 4
  • メインの言語: JavaScript

主な特徴

  • 最大 100GB の大容量ファイルをサポートし、100MB 以上は自動で分片(チャンク)アップロード
  • ダウンロードは 5 分間有効な一時リンク(署名付き URL)で安全に配布
  • ファイルに対してパスワード保護と有効期限を設定、期限切れファイルは自動でクリーンアップ
  • QR コード生成や並列アップロードによる使いやすさと高速化

技術的なポイント

本プロジェクトは Cloudflare Workers(serverless エッジランタイム)と R2(オブジェクトストレージ)を組み合わせるアーキテクチャです。ファイル本体は R2 に保存し、メタデータや有効期限、パスワード情報は外部データベース/スキーマ(schema.sql が同梱)や KV/別のストアに保持する想定です。100MB を超えるファイルはクライアント側でチャンク分割され、Worker 側でチャンク受け取り→R2 にストリーム保存→最終マージ/メタ更新のフローを取ることで、タイムアウトやメモリ消費の問題を回避します。ダウンロードは短時間有効な署名付き URL を生成するため、リンクが漏れても長時間悪用されにくく、かつパスワード保護で二重のアクセス制御が可能です。期限切れの自動削除は、ワーカーの定期トリガ(Cron Trigger)や外部ジョブでメタ情報をチェックし、R2 上のオブジェクトを削除する実装が考えられます。また、QR コード生成は共有 UX を簡素化し、並列アップロードは複数ファイル/複数チャンクを同時送信してアップロード時間を短縮します。デプロイは wrangler CLI を用いて Workers と R2 バケットのバインドを行い、環境変数でバケット名や有効期限設定、署名鍵を管理します。軽量な JavaScript 実装によりエッジでスケールしやすく、R2 の大容量ストレージを活かした設計が特徴です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • schema.sql: file
  • worker.js: file

まとめ

Cloudflare Workers + R2 で大容量ファイル共有を手軽に構築できる実践的なテンプレートです。

リポジトリ情報:

READMEの抜粋:

文件中转站 | File Transfer

基于 Cloudflare Workers + R2 的文件分享服务,支持大文件分片上传,最大支持 100GB。

功能特性

  • 大文件支持:最大支持 100GB 文件上传
  • 分片上传:大于 100MB 的文件自动使用分片上传,避免超时
  • 分享密码:可为文件设置访问密码
  • 过期自动清理:文件可设置过期时间,过期自动删除
  • 临时下载链接:下载链接 5 分钟有效,安全可靠
  • 二维码分享:一键生成分享二维码
  • 并发上传:支持多文件同时上传

部署

1. 创建 Cloudflare Workers

# 使用 wrangler CLI
wrangler login
wrangler init file-transfer

2. 创建 R2 Bucket

在 Cloudflare Dashboard 中创建一个 R2 Bucket,名称默认为 file-transfer(可在配置中修改)。

3. 绑定 R2 …