Pular para o conteúdo

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.
Zendrael zendrael
Hits: 32.314 Categoria: Kylix Subcategoria: Internet
  • Indicar
  • Impressora
  • Denunciar

Parte 3: 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!

   1. Introdução
   2. Cookies e sessions
   3. Upload de arquivos
   4. Templates
   5. Escondendo a URL do CGI

Introdução ao PHP-GTK

Pascal para Web com CGI - Parte I

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

Executando sua aplicação Kylix fora do Kylix

Integrando saídas de comandos shell com sua aplicação Kylix

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.