Fala, pessoal! Como vocês estão?
Hoje vou exemplificar como fazer uma carga de arquivos e como gravar o seu conteúdo em uma coluna BLOB do banco de dados no Oracle APEX.
Quer saber mais sobre o tipo de dado BLOB? Acesse este link.
Criando a tabela exemplo
1 – Para isso, vou criar uma simples tabelinha para gravar os arquivos que serão carregados. É uma tabelinha bem simples com uma coluna para Chave Primária, Nome, Descrição, Mime Type e Charset do Arquivo, além de seu conteúdo:
CREATE SEQUENCE SEQ_ARQUIVO MINVALUE 1 MAXVALUE 9999999 START WITH 100 INCREMENT BY 1 CACHE 20; CREATE TABLE TB_ARQUIVO (ID_ARQUIVO NUMBER NOT NULL, NOME_ARQUIVO VARCHAR2(40), DESCRICAO_ARQUIVO VARCHAR2(200) NOT NULL, MIME_TYPE_ARQUIVO VARCHAR2(40), CONTEUDO_ARQUIVO BLOB NOT NULL, CHARSET_ARQUIVO VARCHAR2(40), UPDATE_DATE DATE); ALTER TABLE TB_ARQUIVO ADD CONSTRAINT PK_ARQUIVO PRIMARY KEY (ID_ARQUIVO);
Veja que também está sendo criada uma sequência para popular a chave primária da tabela.
Uma dica: ao criar a tabela, não determine as colunas referentes às propriedades do arquivo como obrigatórios, pois o Oracle APEX faz a carga do arquivo em duas etapas. Primeiro, insere o conteúdo do arquivo e, posteriormente, atualiza a coluna de nome, mime_type e charset.
Criando as páginas
1 – Depois de criada a tabela, vamos criar as páginas de Relatório e Formulário utilizando-a como base:
2 – Crie o relatório do tipo Interativo:
3 – Selecione as colunas que serão apresentadas no relatório:
4 – Crie a página de formulário para cadastro dos arquivos:
5 – Selecione a coluna que será utilizada para acessar o registro na tela de cadastro. É recomendado utilizar a coluna que representa a chave primária da tabela, mas também podemos utilizar a pseudocoluna ROWID do banco de dados.
6 – Defina como serão atribuídos os valores da chave primária da tabela. Nesse caso, vamos utilizar a sequência que criamos anteriormente.
7 – Esta etapa é uma das mais importantes. Devemos selecionar quais são as colunas da tabela que serão exibidas para o usuário. As colunas MIME_TYPE_ARQUIVO, CHARSET_ARQUIVO, UPDATE_DATE e NOME_ARQUIVO serão carregadas automaticamente pelo Oracle APEX durante o processamento da página, e não é necessário ser exibido.
8 – Conclua a criação das páginas.
Configurando as páginas
Depois que as páginas foram criadas, agora é hora de configurá-las.
Formulário
Primeiro, vamos configurar o item da página de formulário.
Clique no item CONTEUDO_ARQUIVO:
Veja acima que o item é do tipo File Browser, ou seja, permitirá que o usuário selecione um arquivo para efetuar a carga.
Storage Type
A propriedade Storage Type define como será alocado o arquivo. Existem dois tipos:
BLOB column specified in Item Source attribute
Determina que o conteúdo do arquivo será gravado automaticamente na coluna da tabela que está indicada na propriedade Source do item.
Quando selecionado esse tipo de alocação, são habilitadas as seguintes propriedades:
- MIME Type Column: Indica em qual coluna da tabela será gravado o MIME Type do arquivo.
- Filename Column: Indica em qual coluna da tabela será gravado o nome do arquivo.
- Character Set Column: Indica em qual coluna da tabela será gravado o charset do arquivo.
- BLOB Last Updated Column: Indica em qual coluna da tabela será gravada a última data de carregamento do arquivo.
- Display Download Link: Indica se será exibido um link que permite ao usuário efetuar o download do arquivo que foi carregado.
- Download Link Text: Determina um texto para o link de download citado acima.
- Content Disposition: Determina onde o arquivo será exibido. Inline – se possível, exibe no browser. Attachment – efetua o download do arquivo.
Atenção: É muito importante saber que só é possível informar as colunas da mesma tabela onde está o campo BLOB.
Table WWV_FLOW_FILES
Quando selecionada esta opção, o Oracle APEX efetua a carga do arquivo e insere um registro na tabela WWV_FLOW_FILES. Logo, podemos efetuar qualquer tipo de manipulação com o arquivo. É possível acessar o registro da tabela durante toda a sessão do APEX relacionando a coluna NAME com o conteúdo do item, vide exemplo abaixo:
SELECT * FROM WWV_FLOW_FILES F WHERE F.NAME = :P4_CONTEUDO_ARQUIVO
Neste momento, vamos configurar o item com a opção BLOB column specified in Item Source atribute na propriedade Storage Type.
Faça outros devidos ajustes na página, como a acentuação dos labels, então execute clicando no botão e veja como ficou:
Fazendo a validação do tamanho do arquivo
Vamos criar uma validação para limitar o tamanho máximo do arquivo.
Crie uma validação em que, caso o tamanho do arquivo for maior que 2000 bytes, retorne uma mensagem de erro.
Veja abaixo que está sendo consultada a tabela temporária WWV_FLOW_FILES, que é a primeira tabela onde o Oracle APEX carrega o arquivo quando a carga é efetuada.
Se a propriedade Storage Type estiver configurada como BLOB column specified in Item Source attribute, o Oracle APEX automaticamente atualizará a tabela final e apagará o registro da tabela temporária. Se a propriedade Storage Type estiver configurada como Table WWV_FLOW_FILES, o Oracle APEX irá inserir apenas na tabela WWV_FLOW_FILES.
Quando for efetuada uma tentativa de carregar um arquivo maior que 2000 bytes, a mensagem abaixo será exibida:
Relatório
Agora vamos fazer os devidos ajustes na página de relatório.
Vá até a edição da coluna CONTEUDO_ARQUIVO na região que representa o relatório.
Assim como no item da página de formulário, temos as mesmas propriedades. Além delas, temos as seguintes:
- Format Mask – Determina como será exibida a coluna BLOB. Download – link para efetuar download do arquivo. Image – exibirá uma imagem.
- Table – Nome da tabela que contem a coluna BLOB.
- Primary Key Column 1 e 2 – Colunas que representam a chave primária da tabela.
Para as outras propriedades, informe os valores da mesma forma que foi informado no item do formulário.
Faça outros devidos ajustes na página e execute clicando no botão .
Veja como ficou o resultado:
Conclusão
De maneira muito simples, podemos efetuar a carga de um arquivo para uma coluna BLOB do banco de dados utilizando recursos nativos do Oracle APEX sem a necessidade de grandes intervenções de código – exceto na escrita das regras de validação, que permitem a criação de qualquer regra necessária.
Que saber como começar a criar sua própria aplicação utilizando Oracle APEX? Veja aqui.
Até a próxima!!!
Para acessar a aplicação demo da nossa série de artigos utilize o seguinte link.
- Usuário: DEMO
- Senha: imasters