Application starter

Téléversements privés

Configurez des uploads S3 privés avec politique, entitlement, quota, checksum et suppression durable.

Synchronisé avec le commit 7d452a6 du starter.

Définissez STORAGE_PROVIDER à s3, r2 ou minio, puis bucket, région, endpoint et identifiants. Les objets restent privés ; le navigateur reçoit des URL signées courtes, jamais les secrets. Configurez CORS pour l’origine web et les headers PUT ; évitez les ACL sauf nécessité fournisseur.

Contrat

  1. POST /api/storage/uploads valide organisation, storage.upload, politique (general, images, documents, verified), type et le minimum des limites plan/environnement/politique ; le quota est réservé atomiquement.
  2. Le navigateur PUT directement ; XHR ne sert qu’à la progression.
  3. POST /api/storage/uploads/complete vérifie métadonnées et SHA-256 optionnel puis active la ligne.
  4. GET /api/storage/files/[uuid]?download=1 fournit une URL limitée à l’organisation.
  5. DELETE /api/storage/files/[uuid] fait un soft-delete et planifie storage_object_delete durable.

Un upload abandonné libère sa réservation après une heure. La suppression réessaie par la file : cron doit tourner. Le service génère les clés ; le client ne choisit pas la clé bucket.

Testez flux complet, MIME/checksum invalide, concurrence quota, URL expirée, accès inter-organisation, reprise et nettoyage. Voir docs/storage-providers.md du starter pour CORS.

On this page

Téléversements privés · Sushi SaaS