Aurabase-logo
aurabasisdocumenten
documenten›Gidsen›Store and serve files (SDK)

Bewaar en serveer bestanden met de JavaScript SDK

De dagelijkse stromen van aura.storage, waarbij de toegangsregels worden nageleefd tegen een actieve stapel.

8 min lezen·Niveau tussenproduct·Herzien op 12 okt 2026
Deze Engelse tekst is automatisch gegenereerd op basis van het Franse origineel en is nog niet beoordeeld.
Deze pagina is automatisch vertaald. De Engelse versie is gezaghebbend.
#
Emmers

1. Emmers

Een bucket groepeert bestanden en bepaalt of ze openbaar zijn. Voor het maken en verwijderen van buckets is de sleutel service_role vereist. Om ze te kunnen vermelden is een ingelogde gebruiker of een service_role sleutel nodig; alleen de publieke sleutel krijgt 403.

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // iedereen kan de bestanden lezen
await admin.storage.createBucket('invoices', { public: false })  // alleen hun eigenaar kan dat
const { data: buckets } = await admin.storage.listBuckets()

Een bucket accepteert ook fileSizeLimit (in bytes) en allowedMimeTypes. Een upload die te groot is, retourneert 413 en een type dat niet is toegestaan, retourneert 400.

#
Bestanden

2. Uploaden, downloaden, weergeven, verwijderen

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

// Uploaden: een Blob, een bestand of een ArrayBuffer
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → { sleutel, bucket, url, grootte, content_type, etag }

// Vervang een bestaand bestand
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// Een map vermelden, downloaden, verwijderen
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`])

Wat kunt u verwachten:

  • Het uploaden van een bestaand pad retourneert 409 tenzij u upsert: true doorgeeft.
  • Voor het uploaden is een ingelogde gebruiker of een service_role sleutel nodig. Alleen de publieke sleutel krijgt 403, zelfs voor een publieke bucket.
  • Een pad met .. wordt geweigerd met 400.
  • Paden worden gedeeld binnen een bucket. Als een andere gebruiker het pad al heeft, krijg je 409. Plaats de bestanden van elke gebruiker in hun eigen map, zoals ${user.id}/….
#
Deel

3. Deel een bestand

share.tstypescript
// Een bestand in een publieke bucket: een permanente URL, opgebouwd zonder verzoek
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://mijn-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// Een privébestand: een tijdelijke link
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → { url, vervalt_in: 60 }

Beide links zijn zonder sleutel opgehaald en hebben het bestand geretourneerd. Een ondertekende link werkt niet meer na expires_in seconden. Om een ​​browser zonder sleutel te laten uploaden, gebruikt een server createSignedUploadUrl(path) (een service_role-aanroep).

#
Toegang

4. Wie kan wat doen

ActieOpenbare sleutelIngelogde gebruikerservice_role
Een bestand in een openbare bucket lezenjajaja
Lezen, een bestand in een privébucket vermeldenneealleen de eigenaarja
Uploadenneejaja
Vervang of verwijder een bestandneealleen de eigenaarja
Maak een lijst van emmersneejaja
Buckets maken en verwijderenneeneeja

De eigenaar is de gebruiker die het bestand heeft geüpload. In een echte run kon een tweede gebruiker het bestand van de eerste gebruiker niet in een privé-bucket weergeven, downloaden of verwijderen, en ook niet vervangen.

#
Server

5. Verplaats en kopieer vanaf een 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')

Het wijzigen van het formaat van afbeeldingen wordt beschreven in de opslagreferentie.

Laatst bijgewerkt · 12 okt 2026