Guardar los archivos de resultados
Ejemplo de Assembly Status JSON
Después del cambio de tamaño de la imagen de Mi primera aplicación, el
Step crop_thumbed produce una imagen 1500x500. Este extracto
ilustrativo del Assembly Status JSON muestra los campos necesarios
para identificar y guardar ese resultado. Se omiten otros campos del estado; los IDs y las URL de
ejemplo serán distintos en tu respuesta real.
{
"assembly_id": "7828446e5acd4aa996dce3455ec914e9",
"ok": "ASSEMBLY_COMPLETED",
"uploads": [
{
"id": "a30bd0776e7f4ac3817b056d102e8219",
"name": "joe-gardner-149699.jpg",
"ssl_url": "https://temporary-files.example/upload.jpg"
}
],
"results": {
"crop_thumbed": [
{
"id": "b8d12f6c517541ca86bf50c537cedb27",
"original_id": "a30bd0776e7f4ac3817b056d102e8219",
"name": "joe-gardner-149699.jpg",
"ssl_url": "https://temporary-files.example/resized.jpg",
"meta": {
"width": 1500,
"height": 500
}
}
]
}
}
Como puedes ver, Transloadit proporciona las ubicaciones finales y los metadatos de:
- todos los archivos subidos: en la clave
uploads - todos los archivos de resultados generados: en la clave
results
Cada objeto de archivo contiene metadatos, además de un ssl_url que apunta al resultado. Si utilizaste
uno de nuestros Robots de exportación, estas ubicaciones reflejarán el
almacenamiento que especificaste, como tu bucket de S3. De lo contrario, la ubicación será una URL temporal que se
eliminará después de 24 horas.
Las URL temporales solo sirven para descargar los archivos una vez a tu propio almacenamiento. Nunca compartas estas URL con los usuarios finales ni las utilices en producción. Consulta las restricciones del almacenamiento temporal para conocer las limitaciones de uso importantes.
Según tu integración, puedes optar por:
- Procesar los resultados localmente desde donde realizas la solicitud,
- Hacer que los resultados se agreguen a un formulario y se envíen a tu backend, o
- (Con Async Mode) Permitir que Transloadit envíe el
Assembly Status JSON a tu
notify_url, que luego puedes utilizar para guardar registros en tu base de datos.
Consulta la documentación de la API de webhooks para obtener información sobre la configuración y la verificación de firmas. Verifica cada Notification antes de usar su carga útil en tu aplicación.
Mostrar los archivos de resultados a tus usuarios finales
Después de guardar los archivos en un almacenamiento persistente y guardar en tu base de datos los metadatos que sean útiles para tu aplicación, puedes entregárselos a tus usuarios. Sustituye la URL de marcador de posición que aparece más abajo por la URL de tu propio almacenamiento para mostrar la imagen recortada:
<img
alt="Resized uploaded image"
src="https://your-storage.example/resized.jpg"
/>
Si trabajaras con video, podrías considerar reproductores como HLS.js, Plyr o indigo-player, que también admiten streaming en vivo por HTTP y MPEG-DASH.
Al guardar los resultados del procesamiento de archivos, no dependas de su orden
Cuando tus resultados de encoding estén listos y Transloadit haga una solicitud POST a la URL de resultados o a la URL de Assembly Notification, no dependas del orden correcto de los resultados.
Imagina que tienes dos Steps del Robot
🤖/image/resize en tu
Template que usan mediante use
el Step :original, de esta manera:
{
"steps": {
"high": {
"use": ":original",
"robot": "/image/resize",
"width": 500,
"height": 500
},
"low": {
"use": ":original",
"robot": "/image/resize",
"width": 200,
"height": 200
}
}
}
Cuando subes 30 fotos con este Template, el JSON de la
Assembly resultante contiene dos arrays de resultados:
"results" -> "high" y "results" -> "low". Sin embargo, el orden de las imágenes dentro de estos arrays no es el
mismo. El primer resultado de "high" podría derivarse de la 15.ª foto subida, mientras que
el primer resultado del array "low" podría derivarse de la 10.ª foto subida.
Si necesitas asociar los resultados de encoding con sus subidas correspondientes (y probablemente lo necesites),
asócialos mediante la propiedad id de las entradas del array
"uploads" y la propiedad original_id de
las entradas de tus distintos arrays de resultados.
Almacena los archivos subidos originalmente
Almacenar no solo los archivos de resultados codificados, sino también los archivos que tus usuarios subieron originalmente, te permite volver a codificarlos posteriormente en distintos formatos a medida que cambien tus requisitos. Si no los almacenas, se perderán para siempre, ya que probablemente no sea viable pedirles a tus usuarios que vuelvan a subirlos.
Almacena los metadatos
Además de lo anterior, ten en cuenta que las Assemblies son efímeras. Transloadit elimina los registros después de 90 días, por lo que, si quieres conservar cualquiera de los metadatos que contienen, deberías importarlos a tu almacén de datos.