@quadcore-lib/storage-server
v0.1.0
Published
Subida de archivos/imágenes con **driver intercambiable** (local/S3/R2). Validación de tamaño y MIME, URLs firmadas. Upload/borrado **admin**. Trae `LocalStorageDriver` por defecto. Alimenta el campo `images` de products.
Readme
@quadcore-lib/storage-server
Subida de archivos/imágenes con driver intercambiable (local/S3/R2). Validación de tamaño y MIME, URLs firmadas. Upload/borrado admin. Trae LocalStorageDriver por defecto. Alimenta el campo images de products.
Uso
import { QuadcoreStorageModule } from '@quadcore-lib/storage-server';
QuadcoreStorageModule.forRoot({
// driver: new S3StorageDriver({...}), // o Local por defecto
baseDir: './uploads', baseUrl: 'https://cdn.tienda.com',
keyPrefix: 'products',
maxSizeBytes: 5 * 1024 * 1024,
allowedMimeTypes: ['image/png', 'image/jpeg', 'image/webp'],
});Endpoints (admin)
| Método | Ruta | Descripción |
|---|---|---|
| POST | /storage/upload | Multipart file. Devuelve { key, url, size, mimeType }. |
| DELETE | /storage/:key | Borra por key. |
Implementá StorageDriver (put, getSignedUrl, remove) para S3/R2. StorageService es inyectable para subir desde tu propio código.
Seguridad
El LocalStorageDriver confina toda key a baseDir: resuelve path.resolve(baseDir, key) y exige que empiece con baseDir + separador, rechazando con 400 cualquier intento de path traversal (../), ruta absoluta, key vacía o con null-byte. Si implementás un driver propio (S3/R2), aplicá la misma validación de keys.
