Skip to main content

Módulo File

src/app/modules/file/

Gestiona la subida y almacenamiento de archivos adjuntos en conversaciones.

Modelo — File

CampoTipoDescripción
_idObjectId
tenantIdObjectId → Tenant
urlstringURL pública en S3/MinIO
filenamestringNombre original del archivo
mimetypestringTipo MIME
typestringCategoría (IMAGE, PDF, VIDEO, etc.)
sizenumberTamaño en bytes
uploadedByObjectId → UserAgente que subió el archivo
createdAtDate
updatedAtDate

Endpoints

MétodoRutaAuthDescripción
POST/api/v1/files/upload@Auth()Sube archivo (multipart/form-data)
GET/api/v1/files/:id@Auth()Metadatos del archivo
DELETE/api/v1/files/:id@Auth()Elimina archivo (BD + storage)

Flujo de subida

1. POST /files/upload (multipart)
2. FileController → FileService.upload(file, userId)
3. StorageService.upload(buffer, filename) → retorna URL
4. FileRepository.create({ url, filename, mimetype, size, uploadedBy })
5. Respuesta: metadatos del File creado

Límites (file.constants.ts)

  • Tamaño máximo: 10 MB
  • Tipos permitidos: JPEG, PNG, GIF, PDF, MP4, y otros configurables

Uso en mensajería

Tras subir un archivo, el mediaId del File se pasa en el evento WebSocket SEND_FILE para crear un mensaje de tipo MEDIA.