Aurabase-Logo
AurabasisDokumente
Dokumente›Führer›Store and serve files (SDK)

Speichern und bereitstellen Sie Dateien mit dem JavaScript SDK

Die alltäglichen Abläufe von aura.storage, wobei die Zugriffsregeln für einen laufenden Stapel beachtet werden.

8 Min. gelesen·Ebene Mittelstufe·Überarbeitet am 12.10.2026
Dieser englische Text wurde automatisch aus dem französischen Original generiert und wurde noch nicht überprüft.
Diese Seite wurde automatisch übersetzt. Maßgeblich ist die englische Version.
#
Eimer

1. Eimer

Ein Bucket gruppiert Dateien und entscheidet, ob sie öffentlich sind. Zum Erstellen und Löschen von Buckets ist ein service_role-Schlüssel erforderlich. Um sie aufzulisten, ist ein angemeldeter Benutzer oder ein service_role-Schlüssel erforderlich. Der öffentliche Schlüssel allein erhält 403.

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // Jeder kann die Dateien lesen
await admin.storage.createBucket('invoices', { public: false })  // Das kann nur ihr Besitzer
const { data: buckets } = await admin.storage.listBuckets()

Ein Bucket akzeptiert auch fileSizeLimit (in Bytes) und allowedMimeTypes. Ein zu großer Upload gibt 413 zurück, und ein nicht zulässiger Typ gibt 400 zurück.

#
Dateien

2. Hochladen, herunterladen, auflisten, entfernen

files.tstypescript
const bucket = aura.storage.from('invoices')

// Hochladen: ein Blob, eine Datei oder ein ArrayBuffer
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → { Schlüssel, Bucket, URL, Größe, Inhaltstyp, Etag }

// Ersetzen Sie eine vorhandene Datei
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// Einen Ordner auflisten, herunterladen, entfernen
const { data: files } = await bucket.list(user.id)
const { data: blob } = await bucket.download(`${user.id}/2026-10.pdf`)
await bucket.remove([`${user.id}/2026-10.pdf`])

Was Sie erwartet:

  • Das Hochladen eines vorhandenen Pfads gibt 409 zurück, es sei denn, Sie übergeben upsert: true.
  • Zum Hochladen ist ein angemeldeter Benutzer oder ein service_role-Schlüssel erforderlich. Der öffentliche Schlüssel allein erhält 403, selbst für einen öffentlichen Bucket.
  • Ein Pfad mit .. wird abgelehnt, mit 400.
  • Pfade werden innerhalb eines Buckets gemeinsam genutzt. Wenn ein anderer Benutzer den Pfad bereits hat, erhalten Sie 409. Legen Sie die Dateien jedes Benutzers in einem eigenen Ordner ab, z. B. ${user.id}/….
#
Teilen

3. Geben Sie eine Datei frei

share.tstypescript
// Eine Datei in einem öffentlichen Bucket: eine permanente URL, die ohne Anfrage erstellt wird
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://my-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// Eine private Datei: ein temporärer Link
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → { URL, läuft ab: 60 }

Beide Links wurden ohne Schlüssel abgerufen und die Datei zurückgegeben. Ein signierter Link funktioniert nach expires_in Sekunden nicht mehr. Um einen Browser ohne Schlüssel hochladen zu lassen, prägt ein Server createSignedUploadUrl(path) (einen service_role-Aufruf).

#
Zugang

4. Wer kann was tun?

AktionÖffentlicher SchlüsselAngemeldeter Benutzerservice_role
Lesen Sie eine Datei in einem öffentlichen Bucketjajaja
Lesen Sie, listen Sie eine Datei in einem privaten Bucket aufNeinnur sein Besitzerja
HochladenNeinjaja
Ersetzen oder entfernen Sie eine DateiNeinnur sein Besitzerja
Buckets auflistenNeinjaja
Buckets erstellen und löschenNeinNeinja

Der Eigentümer ist der Benutzer, der die Datei hochgeladen hat. In einem echten Durchlauf konnte ein zweiter Benutzer die Datei des ersten Benutzers nicht in einem privaten Bucket auflisten, herunterladen oder entfernen und sie auch nicht ersetzen.

#
Server

5. Verschieben und kopieren Sie von einem Server

server/organise.tstypescript
await admin.storage.copy('invoices', 'a/hello.txt', 'a/copy.txt')
await admin.storage.move('invoices', 'a/copy.txt', 'a/moved.txt')
const { data: meta } = await admin.storage.getMetadata('invoices', 'a/hello.txt')

Die Größenänderung von Bildern wird in der Speicherreferenz beschrieben.

Zuletzt aktualisiert · 12.10.2026