文件中转站(File Transfer)
概要
Cloudflare Workers と R2 をベースにしたファイル共有サービス「文件中转站 / File Transfer」のリポジトリです。大容量ファイル(最大100GB)を扱えるよう分割(チャンク)アップロードをサポートし、100MB を超えるファイルは自動的に分片アップロードされます。パスワード保護、期限付きの自動削除、ダウンロード用の短時間有効な署名付きリンク(5分)や QR コード生成、並列アップロードなど実用的な機能を備え、Cloudflare のエッジで完結する軽量なファイル中継(転送)サービスを実現します。
リポジトリの統計情報
- スター数: 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 で大容量ファイル共有を手軽に構築できる実践的なテンプレートです。
リポジトリ情報:
- 名前: File-Transfer
- 説明: 説明なし
- スター数: 32
- 言語: JavaScript
- URL: https://github.com/SMNETSTUDIO/File-Transfer
- オーナー: SMNETSTUDIO
- アバター: https://avatars.githubusercontent.com/u/162035225?v=4
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(可在配置中修改)。