Salta ai contenuti

Archiviazione

Rebase fornisce archiviazione file integrata con due opzioni di backend:

  • Filesystem locale — File archiviati su disco (ottimo per lo sviluppo)
  • Compatibile 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
}
});

È possibile configurare più backend di archiviazione e instradare campi diversi a backend diversi:

storage: {
"(default)": { type: "local", basePath: "./uploads" },
"media": { type: "s3", bucket: "media-bucket", region: "us-east-1", ... }
}
MetodoPercorsoDescrizione
POST/api/storage/uploadCarica un file
GET/api/storage/files/:pathScarica/servi un file
DELETE/api/storage/files/:pathElimina un file

Per aggiungere caricamenti di file alle tue collezioni, usa la proprietà storage sui campi stringa:

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/*"]
}
}
}
}

Campo di caricamento file

ProprietàTipoDescrizione
storagePathstringSottodirectory all’interno del backend di archiviazione
acceptedFilesstring[]Tipi MIME consentiti (es. ["image/*"], ["application/pdf"])
maxSizenumberDimensione massima del file in byte
fileNamefunctionGeneratore di nomi file personalizzato
metadataobjectMetadati aggiuntivi da archiviare con il file
storeUrlbooleanArchivia l’URL completo invece del percorso relativo

Includi la proprietà storage in un array per caricamenti di file multipli:

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

Caricamento file multipli

Per operazioni programmatiche sui file:

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);
  • Monta un volume persistente se usi l’archiviazione locale su Docker/Kubernetes
  • Usa S3 o compatibile (R2, MinIO) per le distribuzioni in produzione
  • Configura una CDN (CloudFront, Cloudflare) davanti al tuo bucket S3 per le prestazioni