臨時檔案分享
30 分鐘–24 小時 · 最多 10 個檔案 · 每個 50 MB · 適合 AI Agent
工作原理
每個檔案連同你選的有效期透過 Pages Functions 端點 /api/upload 上傳到 Cloudflare R2。物件帶一個自訂 expiresAt 時間戳;/f/<id> 在每次下載時檢查該欄位,過期回傳 410 Gone。R2 的 1 天 lifecycle 規則會物理刪除物件作為兜底。
為 AI Agent 設計
許多語言模型 Agent 具備 fetch 或瀏覽工具,但你直接貼上 URL 時它們不會主動去下載 — 會把它當作不透明字串。每個結果列上的 Agent 提示詞變體會在 URL 前面加一句「請下載並閱讀這個檔案」(按當前語言),讓模型清楚看到指令並伸手去用 fetch 工具。
防猜測
URL ID 使用 16 位 base62 字元(約 95 位元熵),猜中有效連結的機率近乎為零。此外,/f/* 的每個 404/410 都會讓 KV 中的來源 IP 失敗計數 +1。失敗 10 次後,該 IP 被推入封禁列表,TTL 為 30 天,期間該 IP 既不能存取 /f/* 也不能呼叫 /api/upload。
可以上傳什麼
任意類型、最大 50 MB。無需限制類型,因為下載一律帶 Content-Disposition: attachment 和 X-Content-Type-Options: nosniff — 瀏覽器會儲存檔案而非渲染,所以上傳的 HTML/SVG/JS 不會在本站作為指令稿執行。
限制與速率
- 每批最多 10 個檔案。
- 每個檔案最大 50 MB(由上傳 Function 強制 — 前端的限制只是 UX 體驗)。
- 有效期:30 分鐘到 24 小時之間任選。
- 每 IP 上傳限頻:5/分鐘、30/小時、80/天。
- 當 bucket 用量接近免費額度上限時,上傳回傳
503,直到過期檔案釋出空間為止 — 自動恢復。
隱私
每個 URL 請視為與持有連結的人共享,而非私密儲存。連結現實中不可猜,封禁列表也擋掉爆破,但任何拿到 URL 的人在它過期前都能下載檔案。我們對 IP 做 SHA-256 雜湊再用作 KV 鍵,從不寫到 R2 物件上,每個下載回應都帶 noindex, nofollow。