Logotipo de Aurabase
aurabasedocumentos
documentos›Guías›Store and serve files (SDK)

Almacene y proporcione archivos con el SDK de JavaScript

Los flujos cotidianos de aura.storage, con las reglas de acceso observadas en una pila en ejecución.

8 min leer·Nivel intermedio·Revisado el 12 oct 2026
Este texto en inglés se generó automáticamente a partir del original en francés y aún no ha sido revisado.
Esta página fue traducida automáticamente. La versión en inglés es autorizada.
#
cubos

1. cubos

Un depósito agrupa archivos y decide si son públicos. Para crear y eliminar depósitos se necesita una clave service_role. Para enumerarlos se necesita un usuario que haya iniciado sesión o una clave service_role; la clave pública por sí sola obtiene 403.

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // cualquiera puede leer los archivos
await admin.storage.createBucket('invoices', { public: false })  // solo su dueño puede
const { data: buckets } = await admin.storage.listBuckets()

Un depósito también acepta fileSizeLimit (en bytes) y allowedMimeTypes. Una carga demasiado grande devuelve 413 y un tipo que no está permitido devuelve 400.

#
Archivos

2. Cargar, descargar, listar, eliminar

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

// Subir: un Blob, un Archivo o un ArrayBuffer
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → { clave, depósito, URL, tamaño, tipo de contenido, etiqueta electrónica }

// Reemplazar un archivo existente
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// Listar una carpeta, descargar, eliminar
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`])

Qué esperar:

  • Al cargar una ruta existente se devuelve 409 a menos que pase upsert: true.
  • La carga necesita un usuario que haya iniciado sesión o una clave service_role. La clave pública por sí sola obtiene 403, incluso para un depósito público.
  • Se rechaza una ruta con .. con 400.
  • Las rutas se comparten dentro de un depósito. Si otro usuario ya tiene la ruta, obtienes 409. Coloque los archivos de cada usuario en su propia carpeta, como ${user.id}/….
#
Compartir

3. Comparte un archivo

share.tstypescript
// Un archivo en un depósito público: una URL permanente, creada sin una solicitud
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://my-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// Un archivo privado: un enlace temporal
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → {url, expira_in: 60}

Ambos enlaces se obtuvieron sin ninguna clave y devolvieron el archivo. Un enlace firmado deja de funcionar después de expires_in segundos. Para permitir que un navegador cargue sin una clave, un servidor crea createSignedUploadUrl(path) (una llamada service_role).

#
Acceso

4. ¿Quién puede hacer qué?

acciónClave públicaUsuario registradoservice_role
Leer un archivo en un depósito públicosisisi
Leer, enumerar un archivo en un depósito privadonosolo su dueñosi
Subirnosisi
Reemplazar o eliminar un archivonosolo su dueñosi
Listar depósitosnosisi
Crear, eliminar depósitosnonosi

El propietario es el usuario que subió el archivo. En una ejecución real, un segundo usuario no pudo enumerar, descargar o eliminar el archivo del primer usuario en un depósito privado y tampoco pudo reemplazarlo.

#
Servidor

5. Mover y copiar, desde un servidor

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')

El cambio de tamaño de la imagen se describe en la referencia de almacenamiento.

Última actualización · 12 oct 2026