Ir para o conteúdo

Upload de Vários Arquivos S3

Familiarize-se com o Widget de upload de vários arquivos e configurar serviços web do Amazon S3 antes de implementar esta funcionalidade.

Imagem 1

Os requisitos mínimos para combinar as funcionalidades de upload de vários arquivos e armazenamento S3 são algum tipo de campo exclusivo a ser anexado à frente do nome do arquivo S3 para mapeá-lo dentro do aplicativo.

Imagem 2

Este campo organizará os arquivos anexando um prefixo ao nome do arquivo com um GUID e será usado para mapear para o bucket S3. Neste exemplo o GroupID será utilizado para o mapeamento para o arquivo S3 e limitará o acesso ao arquivo para usuários pertencentes a esse grupo.

Imagem 3

Esta funcionalidade depende de uma tabela User, seja específica da aplicação ou da tabela pública de Vinyl User_Read, desde que você seja capaz de aplicar a função Who('userid') para identificar o usuário atual.

Imagem 4

Os grupos também devem ser configurados e uma tabela UserGroup pode ser usada para aplicar segurança baseada em alcance.

Imagem 5

Na página onde ocorrerão os uploads deverá existir um painel que armazene o GUID, neste exemplo a tabela UserParameter com uma coluna para escolher o Grupo ao qual o usuário pertence; este painel está no lado esquerdo neste exemplo.

Configure o widget Multi File Upload em outro painel com um objeto de negócios direcionado UserParameter. No evento Update deste business object configure três ações.

  • Uma regra XP CRUD Insert para inserir os arquivos no bucket S3. Nesta regra de inserção, concatene GroupID + '/' + o nome do arquivo.

  • Outra regra CRUD Insert para criar registros em uma tabela local (neste exemplo, chamada S3File) contendo as informações do arquivo (mas não o conteúdo real do arquivo); certifique-se de que o nome do arquivo seja armazenado de forma idêntica à inserção do bucket S3. Usar esta tabela para mapear para o arquivo S3 otimizará o tempo de carregamento da página para que apenas um arquivo S3 seja acessado por vez.

  • (Opcional) Use o plug-in Persistable – Refresh Row para otimizar a experiência do usuário.

O terceiro painel desta página deve ter um objeto de negócio direcionado à tabela especificada na segunda inserção CRUD. Isso terá a coluna Nome do arquivo com o prefixo GroupID. Vincule este painel ao painel First UserParameter (neste exemplo, o da esquerda), com uma instrução LIKE no GroupID ao nome do arquivo. É aqui que o prefixo GUID do nome do arquivo entra em ação. Isso permitirá que o aplicativo limite o acesso aos arquivos S3 com base na configuração de sua escolha.

Imagem 6

Como o painel inferior fica na parte superior da tabela local e não no bucket S3 real, o acesso de download ao conteúdo real do arquivo estará em uma página pop-up vinculada pelo FileName. A página pop-up terá um painel com a tabela do bucket S3 atrás dele.

Imagem 7

Visão Geral do Vídeo para Upload de Vários Arquivos