Array
(
)

Mandar imagem para outro micro online

Jm
   - 22 mar 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


Duco
   - 24 mar 2006

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.
#Código


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.

#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;

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.


Warfighter
   - 22 jan 2008


Citação:
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.
#Código


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.

#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;

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