Utilidades Cloudinary
Este archivo contiene funciones auxiliares para subir imágenes a Cloudinary desde un buffer en memoria y para generar URLs públicas seguras.
Se usa principalmente en el flujo OCR de NutriScan.
🔍 Ubicación
src/utils/cloudinary.ts
📦 Dependencias
import { cloudinary } from '../config/cloudinary'; // Cliente Cloudinary configurado
import streamifier from 'streamifier'; // Convierte buffer en stream legible
🔧 Funciones Exportadas
📤 cloudinaryUploadBuffer(buffer: Buffer, folder = 'nutriscan-ocr')
Sube una imagen a Cloudinary directamente desde un Buffer (por ejemplo, un archivo recibido en memoria con Multer).
🔐 Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
buffer | Buffer | ✅ | Contenido binario de la imagen. |
folder | string | ❌ | Carpeta de destino en Cloudinary (por defecto: "nutriscan-ocr"). Permite agrupar imágenes. |
📥 Retorno
Promise<any> — Se resuelve con el objeto de respuesta de Cloudinary (UploadApiResponse) o se rechaza con un error.
⚙️ Internamente
- Crea un flujo de subida con
cloudinary.uploader.upload_stream, indicando la carpeta de destino. - Convierte el
Bufferen un stream constreamifier.createReadStream(buffer). - Encadena el stream para subirlo directamente a Cloudinary.
🧪 Ejemplo de uso
const resultado = await cloudinaryUploadBuffer(req.file.buffer);
console.log(resultado.secure_url);
🔗 obtenerUrlPreprocesada(publicId: string)
Genera una URL pública y segura (https) para acceder a un recurso en Cloudinary.
No aplica transformaciones a la imagen; devuelve el recurso tal como está almacenado.
🧾 Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
publicId | string | ✅ | ID público del archivo en Cloudinary. |
📥 Retorno
string — URL segura generada por Cloudinary.
🧪 Ejemplo
const url = obtenerUrlPreprocesada("nutriscan-ocr/imagen_123");
console.log(url); // https://res.cloudinary.com/...
🧾 Resumen
| Función | Descripción |
|---|---|
cloudinaryUploadBuffer | Sube una imagen desde un buffer a Cloudinary. |
obtenerUrlPreprocesada | Genera una URL segura (https) para un recurso en Cloudinary. |
| Carpeta por defecto | nutriscan-ocr |
| Uso principal | OCR de imágenes para análisis nutricional (NutriScan). |
🛠️ Nota
Estas utilidades requieren una configuración previa del cliente en ../config/cloudinary.ts, donde deben cargarse las credenciales (cloud_name, api_key, api_secret) desde variables de entorno.