Ir para o conteúdo

Upload de Vários Arquivos S3

Por favor, familiarize-se com o Widget de upload de vários arquivos e configurando serviços web 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 para anexar à 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á usado 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 uma específica para o aplicativo ou a tabela pública User_Read vinyl, desde que você consiga aplicar a função Who('userid') para identificar o usuário atual.

Imagem 4

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 os uploads ocorrerão, deve existir um painel que armazene o GUID, neste exemplo, a tabela UserParameter com uma coluna para escolher um 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 ao UserParameter. No evento Update deste objeto de negócios, configure três ações.

  • Uma regra XP CRUD Insert para inserir os arquivos no bucket S3. Nesta regra de inserção, concatene o 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 ao Insert do bucket S3. Usar esta tabela para mapear para o arquivo S3 otimizará os tempos de carregamento da página para que apenas um arquivo S3 seja acessado por vez.

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

O terceiro painel nesta página deve ter um objeto de negócios visando a tabela especificada no segundo CRUD Insert. Isso terá a coluna File Name com o prefixo GroupID. Vincule este painel ao painel First UserParameter (neste exemplo, o da esquerda), com uma declaração LIKE no GroupID para o File Name. É aqui que o prefixo File Name GUID entra em jogo. 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 em cima da tabela local e não do 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 dela.

Imagem 7

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