Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

segunda-feira, 19 de setembro de 2016

DELPHI - WebBroker - Como exibir imagens de um diretório local

Reações: 
Como fazer para exibir uma imagem de um site criado pelo webbroker, sem a utilização do Apache ou do ISS por ex?

Simples!

Para isso iremos precisar de uma ação ("action") no WebModule que acione a imagem por linha de comando:


E preparar seu Html para enviar o local da imagem.

Deixei dentro do meu diretório do cgi, um local com as imagens chamado "img"



Criei uma função:


function GetLocalIMG(AImgName: String): String;
begin
  Result := '../Img?Name=' + AImgName;
end;


E no Htm, alterei para exibir o seguinte:

...
    '      ' + sLineBreak +
    '        
' + sLineBreak + ' ' + sLineBreak + ' '...


E no action do Webmodule

procedure TwmLic.wmLicwaImgAction(Sender: TObject; Request: TWebRequest;
  Response: TWebResponse; var Handled: Boolean);
var
  Name: String;
  ImageStream: TmemoryStream;
  sFileImg : String;
  sExt : String;
begin
  Name := Request.QueryFields.Values['Name'];
  Name := StringReplace(Name, '/', '\', [rfReplaceAll, rfIgnoreCase]);

  sFileImg := ExtractFilePath(Application.exeName) + Name;
  if FileExists(sFileImg) then
  begin
    sExt := ExtractFileExt(sFileImg);
    sExt := StringReplace(sExt, '.', '', [rfReplaceAll, rfIgnoreCase]);
    ImageStream := TMemoryStream.Create;
    try
      ImageStream.LoadFromFile(sFileImg);
      ImageStream.Position := 0; // reset ImageStream
      Response.ContentType := 'image/' + sExt;
      Response.ContentStream := ImageStream;
      Response.SendResponse;
    finally
      FreeAndNil(ImageStream);
    end;
  end;
end;


Com este comando acima, você lista a imagem do disco para a memória do servidor, e depois transmite a informação do stream para o html direto.

Testado em Rad Studio 10.1 Berlin em 19/09/2016

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.

Max Gehringer