Téléversements privés
Configurez des uploads S3 privés avec politique, entitlement, quota, checksum et suppression durable.
Synchronisé avec le commit
7d452a6du 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
POST /api/storage/uploadsvalide organisation,storage.upload, politique (general,images,documents,verified), type et le minimum des limites plan/environnement/politique ; le quota est réservé atomiquement.- Le navigateur PUT directement ; XHR ne sert qu’à la progression.
POST /api/storage/uploads/completevérifie métadonnées et SHA-256 optionnel puis active la ligne.GET /api/storage/files/[uuid]?download=1fournit une URL limitée à l’organisation.DELETE /api/storage/files/[uuid]fait un soft-delete et planifiestorage_object_deletedurable.
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.