Migrar de Uploadcare a Transloadit
Uploadcare ofrece API de subida, gestión y URL, incluyendo entrega mediante CDN y grupos de archivos. Transloadit separa estas responsabilidades en Robots de subida/importación, Robots de procesamiento, Robots de exportación y entrega opcional mediante CDN. Haz un inventario de las operaciones que usas y asigna las tareas de procesamiento compatibles a Steps dentro de un Template de Transloadit; esto no es un reemplazo uno a uno de cada función de Uploadcare.
Puedes elegir Transloadit Storage (English) (actualmente en beta) para archivos alojados, o usar tu propio almacenamiento. Con Transloadit Storage, una cuenta de almacenamiento independiente es opcional. File Library (versión preliminar) ofrece gestión de activos digitales para explorar visualmente, organizar, ver vistas previas y descargar archivos en Transloadit Storage. El acceso a File Library se habilita por Workspace; consúltanos sobre la disponibilidad de esta función.
El flujo de trabajo ejecutable que sigue demuestra la opción de usar tu propio almacenamiento. Traslada las subidas y el procesamiento a Templates y exporta los archivos a tu bucket. La migración de carpetas y metadatos de activos existentes, el cambio de las URL de entrega y el reemplazo de selectores de activos o integraciones con CMS/editores requieren un plan de migración independiente; los ejemplos siguientes no los implementan.
Mapa de migración
| Concepto de Uploadcare | Elección de migración en Transloadit |
|---|---|
| Subidor de archivos | Uppy con Transloadit u otro SDK |
| URL de operación de CDN | Steps de Template, o Smart CDN con Robots compatibles y un Step final de /file/serve |
| Redimensionar/recortar imagen | 🤖/image/resize |
| Compresión de imágenes | 🤖/image/optimize, con una decisión explícita de formato/calidad |
| Encoding de video | 🤖/video/encode |
| Grupos de archivos | Procesa varios archivos de entrada en una misma Assembly; conserva el ID de grupo anterior, la membresía ordenada y la receta de transformación de cada miembro en tu aplicación |
| Almacenamiento | 🤖/s3/store u otro Robot de exportación |
| Webhooks | Assembly Notifications; reescribe el manejo y la verificación del payload |
Usa dependencias entre Steps para dirigir archivos entre tareas de procesamiento, no para reemplazar registros persistentes de grupos de archivos. Firma las URL de Smart CDN en tu backend y usa un Template compatible independiente para la entrega bajo demanda.
Decisiones de transformación. Haz un inventario de las cadenas completas de operaciones de URL,
los ajustes preestablecidos de la aplicación, las coordenadas de recorte, la orientación, las
dimensiones, la calidad y el formato. El format/auto
de Uploadcare selecciona formatos según las capacidades del navegador; el avatar WebP fijo que se
muestra a continuación no reproduce esa negociación. Compara los resultados en imágenes
representativas, incluyendo transparencia y animación. Las conversiones de video necesitan sus
propios Templates; ninguno de los ejemplos siguientes migra la transmisión de video, la conversión
de documentos, todas las operaciones de URL ni los complementos de subidor personalizados.
La moderación es un flujo de trabajo independiente. La
moderación de contenido inseguro de Uploadcare puede escanear
imágenes al subirlas o mediante un complemento REST asíncrono, con resultados en
appdata. Conserva el resultado y la política de moderación, incluyendo
umbrales y decisiones de eliminación/revisión, en tu inventario de migración. Estos ejemplos
optimizan o previsualizan archivos; no recrean esa barrera de moderación. Elige y valida un
reemplazo antes de publicar contenido generado por usuarios, y mantén la barrera existente hasta
que esté lista. El filtrado por MIME, el escaneo de malware y la detección de contenido inapropiado
abordan problemas distintos.
Reemplaza el widget de subida
Para las subidas desde el navegador, usa Uppy con el plugin de Transloadit. Uppy te ofrece un selector de archivos, una interfaz de arrastrar y soltar, subidas reanudables, fuentes remotas e integración directa con Transloadit.
Un flujo típico de Uploadcare donde los usuarios suben una imagen y reciben URL de CDN transformadas se convierte en:
- El navegador sube el archivo mediante Uppy y referencia un Template guardado de Transloadit.
- El Template crea todas las variantes que tu aplicación necesita.
- Transloadit notifica a tu backend con las URL del resultado.
- Tu backend almacena esas URL en tu base de datos.
Configura una notify_url en la solicitud de Assembly firmada y verifica las
firmas de las notificaciones entrantes. Para la finalización del lado del navegador, activa el
waitForEncoding de Uppy; el valor predeterminado solo espera la subida.
Reescribe las devoluciones de llamada que esperan UUID, ID de grupo o URL de operación de CDN de Uploadcare. Conserva tu propio ID de activo y asócialo con la Assembly completada y los archivos exportados. Prueba las fuentes locales y remotas, la reanudación, la cancelación, la validación y los fallos; reemplazar la interfaz de subida no reemplaza un explorador de activos o una integración con CMS existentes.
Los webhooks de Uploadcare cubren eventos de subida, información de
archivo, almacenamiento y eliminación. Su secreto de firma opcional produce un encabezado
X-Uc-Signature, y las entregas fallidas se reintentan. Asigna la finalización del
procesamiento a Assembly Notifications, maneja los eventos de catálogo y eliminación en tu
aplicación, y usa la propia verificación de notificaciones de Transloadit. Haz que las
actualizaciones sean idempotentes por el ID de la Assembly y exige una exportación exitosa antes de
publicar. Prueba el comportamiento de reintento y reconciliación en lugar de reutilizar el payload
o el calendario de reintentos anterior.
Decisiones de seguridad. Las subidas firmadas de Uploadcare autorizan la recepción de archivos; la entrega firmada restringe por separado el acceso mediante un subdominio seguro de CDN o un dominio personalizado configurado. Haz un inventario de las rutas públicas y privadas, la expiración de tokens y las variantes permitidas. Usa solicitudes de Transloadit firmadas por el backend para los Templates y campos permitidos, y luego aplica la autorización de descarga mediante tu bucket/CDN. Una solicitud de Assembly firmada no otorga ni restringe el acceso a un objeto S3 exportado. No hagas públicos los archivos privados para simplificar la migración. Si usas la protección contra malware de Uploadcare, añade y prueba un Step de escaneo explícito y una barrera de cuarentena/publicación; los Templates impresos no escanean archivos. La implementación completa de ACL, la calificación de cumplimiento normativo y el enrutamiento regional quedan fuera de los ejemplos de esta guía.
Template de ejemplo
Este Template recibe la subida de una imagen, crea un avatar cuadrado en WebP, optimiza tanto el
original como el avatar, y almacena los archivos optimizados en S3. La optimización no tiene
parámetro de formato y, con progressive desactivado como aquí, devuelve el
original si el archivo optimizado es más grande. Activar progressive permite
conservar un resultado de optimización incluso si es más grande:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"avatar": {
"use": ":original",
"robot": "/image/resize",
"width": 512,
"height": 512,
"resize_strategy": "fillcrop",
"format": "webp"
},
"optimized_original": {
"use": ":original",
"robot": "/image/optimize",
"result": true
},
"optimized_avatar": {
"use": "avatar",
"robot": "/image/optimize",
"result": true
},
"exported": {
"use": ["optimized_original", "optimized_avatar"],
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "uploads/${unique_prefix}/${file.url_name}",
"url_prefix": "https://cdn.example.com/",
"acl": "bucket-default"
}
}
}
Configura credenciales de terceros para S3 y configura tu CDN para
servir la raíz del bucket con acceso de lectura. url_prefix no crea una CDN ni
otorga acceso. acl: "bucket-default" no envía ninguna ACL
de objeto; configura el acceso mediante la política de tu bucket y el acceso de origen de la CDN.
Después de ASSEMBLY_COMPLETED, lee el original desde results.optimized_original y
el avatar desde results.optimized_avatar. Conserva solo las entradas con
is_temp_url: false: la exportación actualiza las URL del Step que las produce. Las URL
temporales de Transloadit expiran después de 24 horas; consulta
guardar los resultados de conversión.
Importa archivos existentes de Uploadcare
Haz un inventario de los originales y los datos de catálogo. Enumera los UUID referenciados por
tu aplicación y concílialos con el inventario de archivos de la API REST
del proyecto, siguiendo la paginación. La información del archivo
incluye original_file_url, original_filename, el tamaño del archivo, el
estado de almacenamiento y los datos de procesamiento. Selecciona la descarga original autorizada
para cada archivo; si original_file_url está ausente o el archivo fue eliminado,
resuelve esa brecha antes de migrar su registro. Obtén URL de origen firmadas y actualizadas en tu
backend cuando sea necesario.
Conserva los metadatos arbitrarios, las
etiquetas y el appdata relevante en tu base
de datos o en registros auxiliares; importar los bytes no los copia. Los
grupos de archivos son colecciones inmutables con miembros
indexados, y un miembro puede incluir una receta de transformación. Registra el ID del grupo, los
UUID de los miembros en orden y las recetas por separado. Una Assembly procesa archivos pero no
recrea esa colección persistente. Conserva las rutas de carpetas, otras relaciones de colección y
el historial de revisiones que mantiene tu aplicación, asignando claves de almacenamiento distintas
a cada revisión; estos Templates no descubren ni exportan revisiones históricas ni relaciones
exclusivas de la aplicación.
Si ya tienes URL de descarga autorizadas de Uploadcare en tu inventario, impórtalas con 🤖/http/import:
{
"steps": {
"imported": {
"robot": "/http/import",
"url": "${fields.uploadcare_url}"
},
"preview": {
"use": "imported",
"robot": "/file/preview",
"result": true
},
"exported": {
"use": ["imported", "preview"],
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "uploadcare-import/${unique_prefix}/${file.url_name}",
"acl": "bucket-default"
}
}
}
El Step de vista previa usa 🤖/file/preview (English) (beta); puede devolver
un ícono genérico de tipo de archivo cuando no hay una miniatura de contenido disponible.
Selecciona valores uploadcare_url autorizados en tu backend. Importar una URL de
CDN transformada copia esa variante, no necesariamente el original. Puedes recuperar solo los
archivos referenciados o pasar un array de URL autorizadas a /http/import para un
lote acotado. Mantén un mapeo de ID antiguo a nueva ubicación y verifica el acceso de entrega y la
calidad del resultado antes de cambiar las lecturas. Este Template de importación devuelve los
archivos exportados bajo results.imported y results.preview. Los
objetos privados de S3 necesitan una descarga autorizada o tu CDN configurada.
Lista de verificación
Cambio de entrega. Registra un mapeo desde cada UUID y cadena de operaciones usada hasta su
destino verificado. Reemplaza las URL en los registros de la aplicación, las páginas renderizadas,
srcset, CSS, correo electrónico y contenido de CMS; añadir la sintaxis de
operaciones de Uploadcare a un nuevo nombre de host de almacenamiento no la aplica. Usa
redirecciones solo en un dominio o ruta de aplicación que controles, con un resolutor para las
rutas antiguas y las reglas de acceso previstas. Para las URL de CDN propiedad del proveedor,
actualiza las referencias que controlas y conserva el acceso de origen durante el período de
solapamiento. Prueba la autorización, el almacenamiento en caché y páginas reales antes de hacer
permanentes las redirecciones o de eliminar los archivos de origen.
Estimación de planificación. Para un solo subidor, unas pocas variantes de imagen, un inventario accesible y un bucket/CDN existente, calcula varios días de ingeniería para un piloto probado, seguidos de un tiempo medido de carga retroactiva. La entrega privada, los grupos, la moderación, los cambios en el CMS y las exportaciones de revisiones/catálogo pueden requerir semanas o más. Esta es una estimación de planificación de ingeniería, no un punto de referencia de migración medido. Mide el rendimiento y el costo de importación, procesamiento y exportación en un lote representativo, incluyendo las descargas de origen, la entrega de destino y el período en que ambos servicios funcionan simultáneamente.
- Haz un inventario de originales, metadatos, etiquetas, orden/recetas de grupos, revisiones, reglas de acceso, operaciones, devoluciones de llamada del subidor y resultados de moderación. Resuelve las funciones excluidas antes del cambio.
- Versiona las Instructions del Template en tu repositorio y prueba las variantes y barreras requeridas. Conserva las revisiones del Template, los IDs de las Assemblies, los fallos y los mapeos de destino para soporte.
- Configura las credenciales, el acceso al almacenamiento/CDN, la firma y el receptor de notificaciones. Verifica la entrega duradera y el manejo de duplicados/fallos en un piloto.
- Establece tamaños de lote acotados, concurrencia, límites de reintento y un presupuesto de migración. Confirma las regiones de procesamiento y almacenamiento, la retención y los requisitos de cumplimiento normativo antes de mover los datos.
- Activa las nuevas subidas detrás de una bandera de función, haz la carga retroactiva en lotes acotados y concilia las exportaciones parciales antes de reintentar. Compara originales, derivados, recuentos de catálogo y acceso privado.
- Actualiza las lecturas y las referencias de entrega por cohortes, conservando el mapeo de origen para una reversión. Concilia la diferencia final del origen y mantén la entrega antigua disponible hasta que hayan pasado la ventana de reversión y los tiempos de vida de la caché.