← Retour à la marketplace
🗂️

Gestion Fichiers

Upload, stockage et gestion des fichiers (local ou S3) avec URLs signées.

InfrastructureSimple~3 joursv1.1.0

Module de gestion des fichiers avec upload sécurisé (validation type/taille), stockage local ou S3 compatible (Minio, AWS S3, Cloudflare R2), URLs signées, redimensionnement d'images et purge automatique.

filesuploads3storageimages

Dépendances requises :

📋 Schéma Prisma

// === Module Gestion Fichiers ===

model StoredFile {
  id          String   @id @default(cuid())
  filename    String
  originalName String
  mimeType    String
  size        Int
  storageKey  String   @unique  // chemin dans le bucket ou filesystem
  bucket      String?
  uploadedBy  String?
  isPublic    Boolean  @default(false)
  expiresAt   DateTime?
  createdAt   DateTime @default(now())

  @@map("stored_files")
}

🔌 Endpoints API

## API Gestion Fichiers

POST /api/files/upload           # Upload multipart (auth requis)
GET  /api/files/:id              # Métadonnées du fichier
GET  /api/files/:id/url          # URL signée temporaire (ou directe si public)
DELETE /api/files/:id            # Supprimer
GET  /api/files                  # Liste des fichiers uploadés par l'user

🛠️ Guide d'implémentation

## Implémentation Gestion Fichiers

### Dépendances (choisir)
```bash
npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner  # S3/Minio
```

### Étape 1 — Service de stockage
Créer src/lib/storage/service.ts avec une interface:
```typescript
async function uploadFile(file: File, options?: UploadOptions): Promise<StoredFile>
async function getSignedUrl(key: string, expiresIn?: number): Promise<string>
async function deleteFile(key: string): Promise<void>
```

### Étape 2 — Validation sécurisée
Valider TOUJOURS le type MIME côté serveur (pas seulement l'extension).
Limite de taille configurable. Scan antivirus en option.

### Étape 3 — Mode local (dev) vs S3 (prod)
Basculer via variable d'environnement STORAGE_PROVIDER=local|s3

### Variables d'environnement
```
STORAGE_PROVIDER=s3
S3_ENDPOINT=https://s3.amazonaws.com
S3_BUCKET=mon-bucket
S3_ACCESS_KEY=xxx
S3_SECRET_KEY=xxx
S3_REGION=eu-west-3
```

Prêt à installer ce module ?

Ajoutez-le à un projet existant depuis la page modules du projet.

Voir les projets →