Zum Inhalt springen

Speicher

Rebase bietet integrierte Dateispeicherung mit zwei Backend-Optionen:

  • Lokales Dateisystem — Dateien werden auf der Festplatte gespeichert (ideal für die Entwicklung)
  • S3-kompatibel — 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
}
});

Sie können mehrere Speicher-Backends konfigurieren und verschiedene Felder an unterschiedliche Backends weiterleiten:

storage: {
"(default)": { type: "local", basePath: "./uploads" },
"media": { type: "s3", bucket: "media-bucket", region: "us-east-1", ... }
}
MethodePfadBeschreibung
POST/api/storage/uploadEine Datei hochladen
GET/api/storage/files/:pathEine Datei herunterladen/bereitstellen
DELETE/api/storage/files/:pathEine Datei löschen

Um Datei-Uploads zu Ihren Sammlungen hinzuzufügen, verwenden Sie die Eigenschaft storage bei String-Feldern:

properties: {
image: {
type: "string",
name: "Product Image",
storage: {
storagePath: "products", // Unterverzeichnis im Speicher
acceptedFiles: ["image/*"], // MIME-Typ-Filter
maxSize: 5 * 1024 * 1024, // max. 5MB
fileName: (context) => { // Benutzerdefinierter Dateiname
return context.entityId + "_" + context.file.name;
}
}
},
documents: {
type: "array",
name: "Documents",
of: {
type: "string",
storage: {
storagePath: "documents",
acceptedFiles: ["application/pdf", "image/*"]
}
}
}
}

Datei-Upload-Feld

EigenschaftTypBeschreibung
storagePathstringUnterverzeichnis innerhalb des Speicher-Backends
acceptedFilesstring[]Erlaubte MIME-Typen (z.B. ["image/*"], ["application/pdf"])
maxSizenumberMaximale Dateigröße in Bytes
fileNamefunctionBenutzerdefinierter Dateinamen-Generator
metadataobjectZusätzliche Metadaten, die mit der Datei gespeichert werden sollen
storeUrlbooleanDie vollständige URL statt des relativen Pfads speichern

Umschließen Sie die storage-Eigenschaft mit einem Array für mehrere Datei-Uploads:

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

Mehrfachdatei-Upload

Für programmatische Dateioperationen:

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);
  • Hängen Sie ein persistentes Volume ein, wenn Sie lokalen Speicher unter Docker/Kubernetes verwenden
  • Verwenden Sie S3 oder kompatible Dienste (R2, MinIO) für Produktions-Deployments
  • Konfigurieren Sie ein CDN (CloudFront, Cloudflare) vor Ihrem S3-Bucket für eine bessere Performance