Aller au contenu

Stockage

Rebase offre un stockage de fichiers intégré avec deux options de backend :

  • Système de fichiers local — Fichiers stockés sur disque (idéal pour le développement)
  • Compatible S3 — AWS S3, MinIO, Cloudflare R2, DigitalOcean Spaces
await initializeRebaseBackend({
// ...
storage: {
type: "local",
basePath: "./uploads" // Directory for file storage
}
});
import { env } from "./env";
await initializeRebaseBackend({
// ...
storage: {
type: "s3",
bucket: env.S3_BUCKET!,
region: env.S3_REGION || "us-east-1",
accessKeyId: env.S3_ACCESS_KEY_ID!,
secretAccessKey: env.S3_SECRET_ACCESS_KEY!,
// Optional: custom endpoint for MinIO, R2, etc.
endpoint: env.S3_ENDPOINT
}
});

Vous pouvez configurer plusieurs backends de stockage et acheminer différents champs vers différents backends :

storage: {
"(default)": { type: "local", basePath: "./uploads" },
"media": { type: "s3", bucket: "media-bucket", region: "us-east-1", ... }
}
MéthodeCheminDescription
POST/api/storage/uploadTélécharger un fichier
GET/api/storage/files/:pathTélécharger/servir un fichier
DELETE/api/storage/files/:pathSupprimer un fichier

Pour ajouter des téléchargements de fichiers à vos collections, utilisez la propriété storage sur les champs de type chaîne de caractères :

properties: {
image: {
type: "string",
name: "Product Image",
storage: {
storagePath: "products", // Subdirectory in storage
acceptedFiles: ["image/*"], // MIME type filter
maxSize: 5 * 1024 * 1024, // 5MB max
fileName: (context) => { // Custom filename
return context.entityId + "_" + context.file.name;
}
}
},
documents: {
type: "array",
name: "Documents",
of: {
type: "string",
storage: {
storagePath: "documents",
acceptedFiles: ["application/pdf", "image/*"]
}
}
}
}

Champ d'envoi de fichier

PropriétéTypeDescription
storagePathstringSous-répertoire dans le backend de stockage
acceptedFilesstring[]Types MIME autorisés (ex. ["image/*"], ["application/pdf"])
maxSizenumberTaille maximale du fichier en octets
fileNamefunctionGénérateur de nom de fichier personnalisé
metadataobjectMétadonnées supplémentaires à stocker avec le fichier
storeUrlbooleanStocker l’URL complète au lieu du chemin relatif

Enveloppez la propriété storage dans un tableau pour les téléchargements de fichiers multiples :

photos: {
type: "array",
name: "Photos",
of: {
type: "string",
storage: {
storagePath: "photos",
acceptedFiles: ["image/*"]
}
}
}

Envoi de fichiers multiples

Pour les opérations de fichiers programmatiques :

import { useStorageSource } from "@rebasepro/core";
const storageSource = useStorageSource();
// Upload a file
const result = await storageSource.uploadFile({
file,
fileName: "my-file.pdf",
path: "documents"
});
// Get download URL
const url = await storageSource.getDownloadURL(result.path);
  • Montez un volume persistant si vous utilisez le stockage local sur Docker/Kubernetes
  • Utilisez S3 ou compatible (R2, MinIO) pour les déploiements en production
  • Configurez un CDN (CloudFront, Cloudflare) devant votre bucket S3 pour les performances
  • SDK Client — Opérations de données et de fichiers programmatiques
  • Propriétés — Tous les types de propriétés