Ir al contenido

Local Filesystem

El módulo Local Filesystem (@zumito-team/local-filesystem) es una implementación de FileManager que almacena archivos en el sistema de archivos local. Ideal para desarrollo, pruebas y bots self-hosted que no necesitan almacenamiento en la nube.

Ventana de terminal
npm install @zumito-team/local-filesystem
zumito.config.ts
import { LocalFilesystemModule } from '@zumito-team/local-filesystem';
export const config = {
bundles: [
{
path: 'node_modules/@zumito-team/local-filesystem',
options: {
basePath: './data/uploads',
publicUrlBase: 'https://ejemplo.com/uploads',
},
},
],
};
import { LocalFilesystemModule, ServiceContainer, LocalFileManager } from '@zumito-team/local-filesystem';
new LocalFilesystemModule({
basePath: './data/uploads',
publicUrlBase: 'https://ejemplo.com/uploads',
});
const fm = ServiceContainer.getService(LocalFileManager);
const fm = ServiceContainer.getService(LocalFileManager);
// Subir (crea directorios automáticamente)
const url = await fm.put('images/banner.png', buffer, 'image/png');
// Descargar
const data = await fm.get('images/banner.png');
// Verificar existencia
const exists = await fm.exists('images/banner.png');
// Listar por prefijo
const files = await fm.list('images/');
// Eliminar
await fm.delete('images/banner.png');

Si publicUrlBase está configurado, las URLs se construyen como {publicUrlBase}/{key}:

// Con publicUrlBase = 'https://ejemplo.com/uploads'
const url = await fm.getUrl('images/banner.png');
// => 'https://ejemplo.com/uploads/images/banner.png'

Sin publicUrlBase, las URLs usan el protocolo file://:

// => 'file:///ruta/absoluta/data/uploads/images/banner.png'
OpciónTipoRequeridoDescripción
basePathstringDirectorio raíz para el almacenamiento.
publicUrlBasestringnoBase para construir URLs públicas (ej: CDN o reverse proxy nginx).

El LocalFileManager normaliza todas las rutas y bloquea el acceso fuera del basePath configurado. Cualquier intento de usar ../ se resuelve silenciosamente al directorio raíz.

  • @zumito-team/file-manager — Contrato abstracto FileManager.
  • zumito-framework
  • File Manager — Contrato abstracto que este módulo implementa.
  • S3 Assets — Implementación alternativa compatible con S3.