Temporäre Dateifreigabe
5 min–1 h · 10 MB max · KI-Agenten-tauglich
So funktioniert es
Jede Datei geht über den Pages-Functions-Endpunkt /api/upload in einen Cloudflare-R2-Bucket, zusammen mit der gewählten Lebensdauer. Das Objekt wird mit einem eigenen expiresAt-Zeitstempel geschrieben; /f/<id> liest ihn bei jedem Download und liefert 410 Gone, sobald er verstrichen ist. Eine R2-Lifecycle-Regel von einem Tag entfernt das Objekt als Rückfallnetz physisch.
Für KI-Agenten konzipiert
Viele Sprachmodell-Agenten können fetch oder ein Browsing-Werkzeug aufrufen, laden aber eine eingefügte URL nicht von sich aus herunter — sie behandeln sie als opaken String. Die Agent-Prompt-Variante jeder Ergebniszeile stellt eine kurze Anweisung voran („Bitte lade diese Datei herunter und lies sie“) in der aktiven Sprache, sodass das Modell neben der URL eine klare Direktive sieht und zu seinem Fetch-Werkzeug greift.
Anti-enumeration
URL-IDs sind 16 Base62-Zeichen (~95 Bit Entropie); die Chance, einen lebenden Link zu erraten, ist praktisch null. Obendrein erhöht jedes 404/410 von /f/* einen Fehlversuchszähler pro IP in KV. Nach 10 Fehlversuchen landet die IP auf einer Sperrliste mit 30 Tagen TTL und ist von /f/* wie /api/upload ausgesperrt, bis die Markierung abläuft.
Was kann ich hochladen?
Jede Datei, jede Größe bis 10 MB. Der Typ ist nicht beschränkt, weil Downloads immer mit Content-Disposition: attachment und X-Content-Type-Options: nosniff ausgeliefert werden — der Browser speichert die Datei, statt sie zu rendern, sodass hochgeladenes HTML/SVG/JS auf dieser Origin nicht als Skript laufen kann.
Limits & Rate
- Gratis: 1 Datei auf einmal. Plus: bis zu 20 Dateien pro Stapel.
- 10 MB pro Datei (durchgesetzt von der Upload-Function — die Frontend-Grenze ist bloß Höflichkeit).
- Lebensdauer: jeder Wert zwischen 5 Minuten und 1 Stunde.
- Upload-Limit — anonym: 10/Min., 60/Std., 160/Tag (pro IP); angemeldet: 10/Min., 50/Std., 200/Tag; Plus: 30/Min., 200/Std., 600/Tag (pro Konto, CGNAT-fest).
- Jedes Limit-Fenster (1 m / 1 h / 24 h) ist am Upload verankert, der es öffnet — nicht an UTC-Mitternacht oder einer lokalen Zeitzone. Du bekommst also immer das volle Fensterbudget, egal wann du anfängst.
- Nähert sich der Bucket der Gratis-Obergrenze, liefern Uploads
503, bis abgelaufene Dateien Platz freigeben — die Erholung passiert automatisch.
Datenschutz
Betrachte jede URL als geteilt mit jedem, der den Link hat, nicht als privaten Speicher. Die ID ist praktisch unerratbar und die Sperrliste stoppt beiläufige Brute-Force, aber jeder mit der URL kann die Datei bis zum Ablauf abrufen. Wir hashen IPs (SHA-256), bevor wir sie als KV-Schlüssel verwenden, persistieren sie nie am R2-Objekt und liefern jeden Download mit noindex, nofollow aus.