Carga de Varios Archivos S3
Familiarízate con el Widget de carga de archivos múltiples y configurar servicios web de Amazon S3 antes de desplegar esta funcionalidad.
Los requisitos mínimos para combinar las funcionalidades de carga de múltiples archivos y almacenamiento S3 son algún tipo de campo único para agregar al frente del nombre de archivo S3 para asignarlo dentro de la aplicación.
Este campo organizará los archivos agregando un prefijo al nombre del archivo con un GUID y se utilizará para asignarlos al depósito S3. En este ejemplo, se utilizará el GroupID para la asignación al archivo S3 y limitará el acceso al archivo a los usuarios que pertenecen a ese grupo.
Esta funcionalidad se basa en una tabla de usuario, ya sea una específica de la aplicación o la tabla pública User_Read, siempre que pueda aplicar la función Who('userid') para identificar al usuario actual.
También se deben configurar los grupos y se puede utilizar una tabla UserGroup para aplicar seguridad basada en el alcance.
En la página donde se realizarán las cargas, debe existir un panel que almacene el GUID, en este ejemplo la tabla UserParameter con una columna para elegir un grupo al que pertenece el usuario; este panel está en el lado izquierdo en este ejemplo.
Configure el widget Multi File Upload en otro panel con un objeto comercial de destino UserParameter. En el evento Update de este objeto comercial, configure tres acciones.
-
Una regla de inserción CRUD de XP para insertar los archivos en el depósito S3. En esta regla de inserción, concatene el GroupID + '/' + el nombre del archivo.
-
Otra regla de inserción CRUD para crear registros en una tabla local (en este ejemplo, llamada S3File) que contenga la información del archivo (pero no el contenido real del archivo); asegúrese de que el nombre del archivo se almacene de manera idéntica a la inserción del depósito S3. El uso de esta tabla para mapear al archivo S3 optimizará los tiempos de carga de la página, de modo que solo se acceda a un archivo S3 a la vez.
-
(Opcional) Use el complemento Persistable – Refresh Row para optimizar la experiencia del usuario.
El tercer panel de esta página debe tener un objeto comercial que tenga como destino la tabla especificada en la segunda inserción CRUD. Este tendrá la columna Nombre de archivo con el prefijo GroupID. Vincule este panel al panel Primer parámetro de usuario (en este ejemplo, el de la izquierda), con una declaración LIKE en GroupID al Nombre de archivo. Aquí es donde entra en juego el prefijo GUID del Nombre de archivo. Esto permitirá que la aplicación limite el acceso a los archivos S3 según la configuración que elija.
Dado que el panel inferior se encuentra sobre la tabla local y no sobre el depósito S3 real, el acceso de descarga al contenido del archivo real se realizará en una página emergente vinculada por el nombre de archivo. La página emergente tendrá un panel con la tabla del depósito S3 detrás.