Mandar imagem para outro micro online

22/03/2006

Boa tarde pessoal,
me pediram pra fazer um sistema mas não sei por onde começar pois nunca fiz algo do tipo..
O problema é o seguinte..
Na entrada da empresa tem uma guarita na qual tem uma webcam que tira foto do veículo..
Qdo eu dar o ok do cadastro eu tenho que enviar essa foto para a minha central via internet. Qual a melhor forma de fazer isso? obrigado pela força


Respostas

24/03/2006

Duco

Não sei se é exatamente isso que você precisa, mas para enviar arquivos da uma maquina para outra via internet você pode usar os componentes Indy (Aqui uso a versão 9.x).

Um Exemplo de código no programa servidor.
var
  Arquivo: TFileStream;
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    Arquivo := TFileStream.Create(´C:\teste.jpg´, fmOpenRead);
    Arquivo.Position := 0;
    ASender.Thread.Connection.WriteInteger(Arquivo.Size);
    ASender.Thread.Connection.WriteStream(Arquivo);
  finally
    Arquivo.Free;
  end;



E no Cliente, uso esse código.

var
  Arquivo: TFileStream;
  Tamanho: Integer;
begin
  IdTCPClient1.Host := ´´;
  IdTCPClient1.Host := Edit1.Text;
  if not DirectoryExists(´C:\Recebido´) then
    CreateDir(´C:\Recebido´);
  if not IdTCPClient1.Connected then
    IdTCPClient1.Connect;
  Arquivo := TFileStream.Create(´C:\Recebido\teste.jpg´, fmCreate);
  try
    IdTCPClient1.WriteLn(´Pegar´);
    Tamanho := IdTCPClient1.ReadInteger;
    IdTCPClient1.ReadStream(Arquivo, Tamanho);


  finally
    Arquivo.Free;
  end;
[/code]
A Principio, no servidor eu criei uma CommandHandler com o nome ´Pegar´ e apliquei o código do servidor nela, já o código no cliente pode ser colocado em um botão normal.
Não sei se é exatamente isso que você precisar, mas espero ter ajudado.


Responder Citar

22/01/2008

Warfighter

Não sei se é exatamente isso que você precisa, mas para enviar arquivos da uma maquina para outra via internet você pode usar os componentes Indy (Aqui uso a versão 9.x). Um Exemplo de código no programa servidor.
var
  Arquivo: TFileStream;
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    Arquivo := TFileStream.Create(´C:\teste.jpg´, fmOpenRead);
    Arquivo.Position := 0;
    ASender.Thread.Connection.WriteInteger(Arquivo.Size);
    ASender.Thread.Connection.WriteStream(Arquivo);
  finally
    Arquivo.Free;
  end;
E no Cliente, uso esse código.
var
  Arquivo: TFileStream;
  Tamanho: Integer;
begin
  IdTCPClient1.Host := ´´;
  IdTCPClient1.Host := Edit1.Text;
  if not DirectoryExists(´C:\Recebido´) then
    CreateDir(´C:\Recebido´);
  if not IdTCPClient1.Connected then
    IdTCPClient1.Connect;
  Arquivo := TFileStream.Create(´C:\Recebido\teste.jpg´, fmCreate);
  try
    IdTCPClient1.WriteLn(´Pegar´);
    Tamanho := IdTCPClient1.ReadInteger;
    IdTCPClient1.ReadStream(Arquivo, Tamanho);


  finally
    Arquivo.Free;
  end;
[/code] A Principio, no servidor eu criei uma CommandHandler com o nome ´Pegar´ e apliquei o código do servidor nela, já o código no cliente pode ser colocado em um botão normal. Não sei se é exatamente isso que você precisar, mas espero ter ajudado.


No caso qual dos dois estão enviando a imagem ?

do server para o client ? ou do client para o server ?

em qual evento de cada component eu coloco esses codes ?

flw


Responder Citar