Logo Aurabase
aurabasedocumenti
documenti›Guide›Store and serve files (SDK)

Archivia e offri file con JavaScript SDK

I flussi quotidiani di aura.storage, con le regole di accesso osservate rispetto a uno stack in esecuzione.

8 min letto·Livello intermedio·Revisionato il 12 ott 2026
Questo testo inglese è stato generato automaticamente dall'originale francese e non è stato ancora rivisto.
Questa pagina è stata tradotta automaticamente. Fa fede la versione inglese.
#
Secchi

1. Benne

Un bucket raggruppa i file e decide se sono pubblici. La creazione e l'eliminazione dei bucket richiede una chiave service_role. Per elencarli è necessario un utente registrato o una chiave service_role; solo la chiave pubblica ottiene 403.

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // chiunque può leggere i file
await admin.storage.createBucket('invoices', { public: false })  // solo il loro proprietario può
const { data: buckets } = await admin.storage.listBuckets()

Un bucket accetta anche fileSizeLimit (in byte) e allowedMimeTypes. Un caricamento troppo grande restituisce 413 e un tipo non consentito restituisce 400.

#
File

2. Carica, scarica, elenca, rimuovi

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

// Carica: un BLOB, un file o un ArrayBuffer
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → { chiave, bucket, url, dimensione, content_type, etag }

// Sostituisci un file esistente
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// Elenca una cartella, scarica, rimuovi
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`])

Cosa aspettarsi:

  • Il caricamento di un percorso esistente restituisce 409 a meno che non si passi upsert: true.
  • Il caricamento richiede un utente registrato o una chiave service_role. Solo la chiave pubblica ottiene 403, anche per un bucket pubblico.
  • Un percorso con .. viene rifiutato con 400.
  • I percorsi sono condivisi all'interno di un bucket. Se un altro utente ha già il percorso, ottieni 409. Inserisci i file di ciascun utente nella propria cartella, ad esempio ${user.id}/….
#
Condividi

3. Condividi un file

share.tstypescript
// Un file in un bucket pubblico: un URL permanente, creato senza richiesta
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://my-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// Un file privato: un collegamento temporaneo
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → { url, scade_in: 60 }

Entrambi i collegamenti sono stati recuperati senza alcuna chiave e hanno restituito il file. Un collegamento firmato smette di funzionare dopo expires_in secondi. Per consentire il caricamento di un browser senza una chiave, un server conia createSignedUploadUrl(path) (una chiamata service_role).

#
Accesso

4. Chi può fare cosa

AzioneChiave pubblicaUtente registratoservice_role
Leggere un file in un bucket pubblicosìsìsì
Leggi, elenca un file in un bucket privatonosolo il suo proprietariosì
Caricanosìsì
Sostituisci o rimuovi un filenosolo il suo proprietariosì
Elenca i bucketnosìsì
Crea, elimina i bucketnonosì

Il proprietario è l'utente che ha caricato il file. In un'esecuzione reale, un secondo utente non può elencare, scaricare o rimuovere il file del primo utente in un bucket privato e non può nemmeno sostituirlo.

#
Server

5. Sposta e copia da un 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')

Il ridimensionamento delle immagini è descritto in riferimento all'archiviazione.

Ultimo aggiornamento · 12 ott 2026