Skip to main content

put(file, options)

put() lädt eine Datei hoch und gibt das neue Objekt zurück.

Eingaben

Die Endung des Objekts stammt aus filename, sonst aus dem Basisnamen des Pfads oder dem Namen der File. Bytes und ein einfacher Blob haben keinen Namen, also übergib filename (zum Beispiel "data.json"), wenn du sie hochlädst.
In Node.js wirft ein Pfad, der sich nicht öffnen lässt, einen einfachen Error (Cannot open file: <path>, mit dem ursprünglichen Fehler in cause). Im Browser schlägt die Übergabe eines Pfads schon früher fehl, mit dem Fehler beim Import von node:fs. Verwende stattdessen eine File aus einem <input type="file">.

Optionen

Die vollständigen serverseitigen Regeln findest du unter Object Post.

Ergebnis

Einfache und Multipart-Uploads

put() wählt den Upload-Ablauf anhand der Dateigröße: Jede Datei muss mindestens 512 Bytes groß sein; kleinere Dateien schlagen mit FILE_TOO_SMALL fehl. Ein max_size aus einer Regel oder einem Upload-Token oder dein Speicherkontingent kann die Obergrenze von 10 GiB senken.

So läuft ein Multipart-Upload ab

  1. Das SDK startet den Upload, und der Server antwortet mit seinen Teillimits (max_size, max_parts).
  2. Die Datei wird in Teile von min(max_size, max(16 MiB, ceil(size / max_parts))) Bytes aufgeteilt. Ein Teil ist meist 16 MiB oder größer, aber kleiner, wenn das max_size des Servers kleiner ist.
  3. Die Teile werden 6 gleichzeitig gesendet, das Limit des Servers für gleichzeitig laufende Teile. Ein fehlgeschlagener Teil wird innerhalb von maxRetries wiederholt.
  4. Wenn alle Teile angekommen sind, schließt das SDK den Upload ab.
Schlägt ein Teil endgültig fehl oder schlägt der Abschluss fehl, wartet das SDK auf die noch laufenden Teile und bricht den Upload dann ab, sodass kein Teil nach dem Abbruch ankommt. Der ursprüngliche Fehler wird geworfen. Es gibt keine Fortsetzung: Rufe put() erneut auf.
Ein Multipart-Upload prüft weder overwrite: false noch checksum_sha256. Er ersetzt ein vorhandenes Objekt mit demselben Namen immer.
Ein Konto kann höchstens 32 offene Multipart-Uploads haben (gemeinsam mit dem S3-Gateway); ein weiterer schlägt mit TOO_MANY_OPEN_UPLOADS fehl. Da Teile pro Konto 6 gleichzeitig gesendet werden, führe jeweils nur einen großen Upload aus.

Hochladen aus dem Browser

Sende den API-Schlüssel nie an einen Browser. Stattdessen erstellt dein Server ein kurzlebiges Upload-Token, und der Browser lädt damit hoch.
Ein mit einem Token erstellter Client kann nur put() aufrufen, einschließlich Multipart-Uploads. Jede andere Methode schlägt mit 403 UPLOAD_TOKEN_NOT_ALLOWED fehl.

uploadTokens.create(options)

Das Token legt jede Option fest, mit der es erstellt wurde. Die Methode gibt { token, expires_at, max_uses } zurück. Die serverseitigen Regeln findest du unter Upload Tokens.
uploadTokens.create() ist ein Schreibvorgang und erhält einen einzigen Versuch: Er wird nie wiederholt.