Skip to main content

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ámetroTipoObligatorioDescripción
bufferBufferContenido binario de la imagen.
folderstringCarpeta 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

  1. Crea un flujo de subida con cloudinary.uploader.upload_stream, indicando la carpeta de destino.
  2. Convierte el Buffer en un stream con streamifier.createReadStream(buffer).
  3. 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ámetroTipoObligatorioDescripción
publicIdstringID 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ónDescripción
cloudinaryUploadBufferSube una imagen desde un buffer a Cloudinary.
obtenerUrlPreprocesadaGenera una URL segura (https) para un recurso en Cloudinary.
Carpeta por defectonutriscan-ocr
Uso principalOCR 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.