Aplicación starter

Subidas a almacenamiento privado

Configura subidas privadas S3 con políticas, entitlement, cuota, checksum y borrado duradero.

Sincronizado con el commit 7d452a6 del starter.

Define STORAGE_PROVIDER como s3, r2 o minio y configura bucket, región, endpoint y credenciales. Los objetos son privados; el navegador recibe URLs firmadas breves, nunca credenciales. Configura CORS para el origen web y headers PUT; evita ACL salvo que el proveedor las exija.

Contrato

  1. POST /api/storage/uploads valida organización, storage.upload, política (general, images, documents, verified), tipo y el menor límite entre plan, entorno y política; reserva cuota atómicamente.
  2. El navegador hace PUT directo; XHR solo expone progreso.
  3. POST /api/storage/uploads/complete verifica metadatos y SHA-256 opcional y activa la fila.
  4. GET /api/storage/files/[uuid]?download=1 entrega URL de descarga limitada a la organización.
  5. DELETE /api/storage/files/[uuid] hace soft-delete y programa storage_object_delete duradero.

Las subidas abandonadas liberan reserva tras una hora. El borrado reintenta por la cola, así que cron debe funcionar. El servicio genera las keys; el cliente no elige keys del bucket.

Prueba flujo completo, MIME/checksum incorrecto, carreras de cuota, URL caducada, acceso cruzado, reintento y limpieza. Consulta docs/storage-providers.md del starter para CORS.

On this page

Subidas a almacenamiento privado · Sushi SaaS