A estrutura de arquivos do projeto possui diferenças durante o desenvolvimento e em produção, após gerar o ".war". É importante entendermos essa diferença principalmente ao trabalharmos com os blocos Pasta da Aplicação, Pasta temporária e Pasta reciclável da aplicação. Mostraremos algumas diferenças e como tratar.
Os arquivos ficam localizados na árvore de arquivo no canto esquerdo da área de produção, como mostrado na figura 1. Note que a pasta mobileapp fica localizada no endereço "src/main/mobileapp
", com isso, caso precise acessar a pasta, você precisaria informar esse caminho nos blocos de programação. No entanto, ao exportar seu projeto no formato ".
war"
, o caminho não será o mesmo, após compilado ele não ficará mais dentro de "src"
, e sim na raiz do projeto, como mostrado na figura 1.1.
Figura 1 - Localização da pasta mobileapp em produção
Na figura 1.1, verifique que a estrutura dos arquivos estão diferentes da estrutura de desenvolvimento, que o caminho para acessar a pasta webapp precisaria ser acessado pelo endereço "src/main/webapp
", já quando o arquivo é extraído no formato ".war", o conteúdo da pasta webapp
está na raiz, podendo também acessar dentro dela a pasta mobileapp. Para mais informações da estrutura de um arquivo .war, consulte a documentação de referência.
Figura 1.1 Localização da pasta mobileapp em .war
Para a pasta mobileapp ser visualizada, é preciso que ela seja selecionada na hora de efetuar a extração dos arquivos no formato ".war
", para isso, acesse o tópico War da documentação Importar e exportar projetos.
Abaixo (Figura 1.2) usamos um exemplo para baixar o arquivo "meuarquivo.txt" que está dentro da pasta views do ambiente web. O código abaixo faz a verificação nas duas árvores de arquivos diferentes, tanto em desenvolvimento quanto em produção ".war".
Figura 1.2 - função para verificar e baixar arquivo
O Cronapp possui diversas abordagens para permitir que o usuário envie arquivos para o sistema, veremos aqui as principais. Além disso, é importante destacar que a exibição dos arquivos na árvore de diretórios pode variar entre os Modos Avançado ou Analista. No Modo Analista, as pastas são configuradas com filtros para exibir apenas os tipos de arquivos esperados para cada diretório específico. Por exemplo, nos diretórios destinados a formulários ou views, somente arquivos com a extensão .view.html
serão apresentados.
Para visualizar arquivos com extensões diferentes das previstas para uma determinada pasta, é necessário ativar o Modo Avançado. Na Figura 2, essa diferença pode ser observada, o conteúdo exibido na pasta "logged" varia conforme o modo selecionado, Modo Analista (destaque 1) ou Modo Avançado (destaque 2).
Figura 2 - Diferença na exibição de arquivos entre os modos analista e avançado
As páginas CRUDs criadas a partir do Diagrama de dados permite tratar o envio de arquivos de forma simples e sem a necessidade de desenvolver uma lógica de controle. Nesse modo, a configuração é feita a partir da janela de edição do atributo de uma classe, onde é possível defini-lo como Arquivo ou Imagem e em seguida selecionar o local onde serão hospedados: em banco de dados ou cloud.
No exemplo da figura 2.1, o atributo "conteudo" da classe "Anexo" foi configurado com o tipo "Arquivo no Cloud" para o serviço de armazenamento do Cronapp. Dessa forma, ao criar um registro na página CRUD que representa a classe, o arquivo será enviado automaticamente para o local de armazenamento na nuvem, ficando apenas o registro do seu endereço.
Figura 2.1 - Configuração de um atributo do tipo Arquivo na nuvem
Os campos Tipo de Armazenamento, Id do Armazenamento, Chave do Armazenamento e Segredo do Armazenamento só ficam habilitados ao definir o atributo como tipo "Arquivo no Cloud" ou "Imagem no Cloud". |
Configurado essa etapa, basta salvar, gerar as camadas de persistências e a página CRUD. Todos os arquivos/imagens enviados por essa página serão direcionados para o local de armazenamento selecionado.
O Cronapp possui uma rotina interna para o armazenamento e organização de imagens e arquivos enviados ao Dropbox ou S3 quando o atributo de uma classe é configurado com os tipos Arquivo/imagem no Cloud e uma página CRUD é gerada. A hierarquia dos diretórios não é parametrizável e seguirá a entidade de origem, independente da plataforma. A estrutura de pastas é construída da seguinte forma:
Aplicativos/nomeDoAppCriado/NomeDaEntidade/CampoDaEntidade/Id-ValorDoCampoId.extensao
NomeDoBucket/IdAplicacao/NomeDaEntidade/CampoDaEntidade/Id-ValorDoCampoId.extensao
Essa abordagem garante consistência na organização dos arquivos pois é baseada nas entidades de origem, adaptando-se às particularidades de cada plataforma.
Vale salientar que a estrutura gerada a partir da página CRUD não realiza, de forma nativa, exclusão dos arquivos dentro das plataformas Dropbox e S3, apenas inserção e leitura. |
Existem dois componentes visuais que tratam do envio de arquivos, em ambos os casos serão necessários criar uma regra de negócio para tratar o conteúdo recebido. Acesse suas documentações para mais detalhes.
Figura 2.2 - Componentes Envio de Arquivo Dinâmico e Imagem Dinâmica
O bloco de programação servidor Upload de Arquivo exibe automaticamente uma janela modal para o usuário enviar seus arquivos. Esse bloco permite configurar restrições por extensões e tamanho, além de permitir o envio de um ou múltiplos arquivos.
Figura 2.3 - Bloco Upload de arquivo
No exemplo da figura 2.3, os arquivos serão encaminhados para a Pasta reciclável da aplicação. Porém, em um exemplo real, eles poderiam ser enviados para um bucket, como o sistema de armazenamento S3 da Amazon. Esse processo poderia ser feito utilizando o plugin Cronapp Amazon S3.
Nesta página
Lista dos blocos servidores da categoria Arquivo.