Pascal para Web com CGI - Parte II

Continuando a série de artigos sobre programação para Web com (Object) Pascal, veremos agora como trabalhar com cookies, sessions, Upload de arquivos e utilizar templates para melhorar o visual de nosso site e/ou aplicação.

[ Hits: 30.384 ]

Por: Zendrael em 29/03/2013


Upload de arquivos



Seja num blog ou numa intranet, muitas e muitas vezes precisamos que nosso site receba algum tipo de arquivo. Podem ser as imagens que complementarão algum texto, arquivos compactados de algum projeto, ou mesmo outras páginas que complementem nossa aplicação.

Vamos criar uma nova action em nosso projeto com o nome "upload" e vamos observar no código abaixo, a ser inserido no evento OnRequest da action "upload", como é simples receber arquivos através de nosso CGI e direcioná-los para o diretório que precisarmos:

procedure TFPWebModule1.uploadRequest(Sender: TObject; ARequest: TRequest; AResponse: TResponse; var Handled: Boolean);
begin
  //configura retorno
  AResponse.ContentType := 'text/html;charset=utf-8';
  //Cria o formulário de envio de arquivos.   //ele será visível a todo momento neste exemplo
  AResponse.Contents.Add( '<form action="/cgi-bin/projeto.cgi/upload" method="post" enctype="multipart/form-data" name="formulario">' );
  AResponse.Contents.Add( '<label>Escolha um arquivo: </label><br /><input type="file" name="arquivo"/>' );
  AResponse.Contents.Add( '<br /><input type="submit" class="btnBlue" value="enviar"/>' );
  AResponse.Contents.Add( '</form>' );
  //se algum arquivo for recebido,
  //transfere para o diretório que desejarmos

  if ARequest.Files.Count > 0 then
  begin
     //copia o arquivo recebido para o diretório que especificamos,
     //mantendo o nome original do arquivo e sua extensão.
     //neste caso, o arquivo será copiado para um diretório acima do cgi-bin

     CopyFile( ARequest.Files[0].LocalFileName, '../' + ARequest.Files[0].FileName );
     //após a cópia, informa o sucesso do Upload
     AResponse.Contents.Add('<p style="color:green;">Arquivo enviado!</p>');
end;
  //ação completada
  Handled:= True;
end;


Atenção aos comentários no código e quanto às configurações do formulário HTML, para que a aplicação possa receber arquivos por POST.

* Reitero que o diretório de onde vamos salvar nossos arquivos, é relativo ao diretório de onde está localizado nossa aplicação!

Podemos agora, testar nosso CGI acessando o formulário de envio de arquivos:
  • http://127.0.0.1/cgi-bin/projeto.cgi/upload

Após enviar algum arquivo, vá ao diretório que especificou e confira se ele foi transferido corretamente.

* Lembre-se que o CGI deve ter permissão de escrita no diretório escolhido!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Cookies e sessions
   3. Upload de arquivos
   4. Templates
   5. Escondendo a URL do CGI
Outros artigos deste autor

Pascal para Web com CGI - Parte I

Introdução ao PHP-GTK

Leitura recomendada

Configurando o Apache para executar CGIs em Kylix

Pascal para Web com CGI - Parte I

TCollection e Generics no Free Pascal - Uma breve visão sobre lista de objetos com o Lazarus

Como imprimir diretamente na porta de impressão

Criando aplicação para detectar informações do sistema em Kylix

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts