Saltar al contenido

Widget de Carga Múltiple de Archivos en Jitterbit App Builder

Descripción

El widget Carga Múltiple de Archivos utiliza la biblioteca FilePond. Este widget permite cargar múltiples archivos de manera sincrónica o asincrónica al almacenar temporalmente los archivos en una sola columna. Utiliza el evento Guardar para extraer el binario del archivo y moverlo a una tabla separada. Desde allí, se puede procesar más o mover a un sistema de archivos local o de red.

Para descargar el widget de Carga Múltiple de Archivos, consulta Carga Múltiple de Archivos en Descargas de Widgets.

  • Creador Original: JP Fortier

  • Actualizado Por: Andros Haggins & Shrey Kumar

  • Tipo: Widget de Control

  • Parámetros:

    Nombre del Parámetro Predeterminado Traducible Descripción
    allowImagePreview 1 No Habilitar (1) o deshabilitar (0) la vista previa para tipos de archivos de imagen.
    allowMultiple 1 No Habilitar (1) o deshabilitar (0) la adición de múltiples archivos.
    forceReload 1 No Habilitar (1) o deshabilitar (0) la ejecución de una actualización global después de que se haya cargado un lote de archivos.
    runSave 1 No Habilitar (1) o deshabilitar (0) la ejecución del evento de guardar para cada archivo que se carga en la columna de archivos del Objeto de Negocio.
    allowFileSizeValidation 1 No Habilitar (1) o deshabilitar (0) para permitir el uso de la configuración del parámetro maxFileSize.
    maxFileSize 5000KB No Valor para el tamaño de archivo más grande que el widget permitirá. Debe expresarse en kilobytes y es un valor de cadena.

    Se pueden configurar más parámetros según la documentación de FilePond en la sección de Propiedades. Para agregar parámetros/propiedades adicionales, será necesario editar el archivo binder.js en el widget directamente.

    Nota

    Cualquier parámetro/propiedad adicional que se agregue puede no funcionar como se espera y solo se han probado los parámetros anteriores.

Configuración

A continuación se muestra un ejemplo de cómo configurar y usar el widget de Carga de Múltiples Archivos. La guía se divide en dos pasos:

Paso 1: Configurar tablas, objetos de negocio y reglas

Para que el widget de Carga de Múltiples Archivos funcione correctamente, primero necesitaremos dos tablas. Una para los archivos que se guardarán, a la que llamaremos la tabla Archivo, y otra que asociará tus cargas de archivos con otros datos según el caso de uso de tu aplicación, a la que llamaremos la tabla Ticket.

Definiciones de tabla

La tabla Ticket se puede definir como se muestra en la captura de pantalla a continuación. Aunque se muestran otras columnas, las únicas que son requeridas son la Clave Privada (PK) (TicketID) y la columna Binaria (Archivo).

tickettable.png

La siguiente captura de pantalla muestra la definición de la tabla Archivo. Aunque se muestran otras columnas, las únicas que son requeridas son la Clave Privada (PK) (FileID), la columna Binaria (Archivo) y la Clave Foránea (FK) (TicketID).

filetable.png

Ahora que las tablas están configuradas, podemos configurar las tres reglas (dos objetos de negocio y una regla CRUD) que necesitaremos.

Definiciones de regla

Primero, necesitaremos un objeto de negocio, llamado Ticket (Fuente), que actúe como un objeto fuente para la tabla Ticket. Este es el objeto de negocio al que se vinculará nuestro panel con el widget, lo que nos permitirá asociar un archivo con un registro específico:

ticketsource.png

Nuestro segundo objeto de negocio, llamado Ticket (Archivo), apunta a la misma tabla Ticket, pero solo contiene las columnas TicketID (que es la clave primaria), Archivo y nombre de archivo (opcionalmente). Esto es importante porque necesitamos un objeto de negocio separado para que el widget esté en él y se puedan cargar múltiples archivos en paralelo:

ticketfile.png

Nuestra última regla de negocio es una regla CRUD de Inserción, llamada Ticket (Insertar en Archivo), que insertará un nuevo registro en la tabla Archivo. Apuntamos a la tabla Archivo y agregamos un NewUUID() a la columna FileID. Esta regla CRUD se añadirá al evento de Guardar para nuestro objeto de negocio anterior en el siguiente paso:

ticketinsertcrud.png

Ahora asociamos la regla CRUD Ticket (Insertar en Archivo) con el evento de Guardar de nuestro segundo objeto de negocio, Ticket (Archivo), y agregamos un enlace en TicketID como se muestra a continuación. Esto moverá cada archivo a la tabla Archivo una vez que se haya terminado de cargar. Debido a que nuestra tabla Ticket solo tiene una columna de archivo binario, esta configuración permite que un número dinámico de archivos se asocie con un solo registro en Ticket:

ticketsaveevent.png

ticketeventregistration.png

Paso 2: Configurar el widget de Carga Múltiple de Archivos

Ahora podemos pasar a la capa de UI para configurar el widget en sí. Nuestra página constará de dos paneles. Uno usando Ticket (Fuente) y el otro usando Ticket (Archivo):

pagedesign.png

El panel que usa Ticket (Fuente) tiene menos restricciones en cuanto a configuración siempre que nuestro siguiente panel esté vinculado a él. Así es como se ve el nuestro:

paneldesign.png

Nuestro siguiente panel que usa Ticket (Archivo) tiene un único control de Archivo donde configuraremos el widget:

ticketfilepaneldesign.png

filecontrol.png

En la configuración del control Archivo, haz clic en la pestaña Caso Especial y bajo el grupo de campos Caso Especial, encontrarás el campo Widget. Selecciona el widget Carga de Múltiples Archivos. Si deseas cambiar alguno de los parámetros predeterminados, puedes hacerlo ahora:

widgetparameters.png

Observa que hemos cambiado el valor de maxParallelUploads a 25. Aunque el valor de runSave sigue siendo 1, lo mostramos aquí para resaltar su importancia en la funcionalidad de este widget. Dado que nuestra regla CRUD que mueve nuestro archivo a la tabla Archivo está configurada en el evento Guardar de Ticket (Archivo), necesitamos asegurarnos de que esto esté configurado en 1 para que funcione correctamente. Si runSave no está configurado en 1, no podremos manejar múltiples archivos.

Si tienes algún procesamiento/acción adicional que deba realizarse en un archivo, debe hacerse en el evento Insertar para la tabla Archivo. Esto incluiría mover el archivo a un sistema de archivos local o de red.

Nota

Si estás subiendo archivos a un Bucket de Amazon S3 y deseas crear una estructura de directorios en niveles para los archivos, consulta el artículo sobre el sistema de archivos de Amazon S3.

Ejemplo en video de la implementación del widget