Fórum Compartilhar file via web #184599

27/09/2003

0

Pessoal,
alguem aí sabe como, tem um demo, ou um componente mais específico para se transferir um arquivo entre duas máquinas assim via internet?

Eu tentei com o indy, até q quase deu certo, mas as permissões pra um só arquivo q seria especificado pelo client não dác erto pra selecionar e enviar...

Então alguem tem uma saída aí pra fazer um meio de transferir arquivo de uma máquina pra outra?


Valew


Lipsil

Lipsil

Responder

Posts

27/09/2003

Henry

Brother, eu fiz uma rotina do cão em um projeto que não era santo....
Minha rotina funciona assim, fiz com as sockets da palheta Internet.

Configurações do ClientSocket:
Address:= Ip da maquina aonde esta o servidor.
Port:= Porta pela qual vai ser passado o arquivo(Escolha qualquer uma, mas cuidado com as portas definidas, tipo 21 do FTP, 25 do SMTP)
active:= false;//Por enquanto


Coloque um opendialogbox, da paleta dialog pra puxar o arquivo pra dentro do programa, tipo, um txt, puxe pra dentro de um MEMO, e aplique o seguinte codigo no botão enviar:

Clientsocket1.active:= true;
clientsocket1.socket.sedtext(memo1.lines);
clientsock1.active:= false;

Ai no servidor, vc coloca(Object inspector)
Port:= Mesma do client;
Active:= true;
// Sempre o servidor tem que ser aberto antes do programa cliente.

No evento OnclientRead bote o seguinte codigo:
memo2.Lines.add(Serversocket1.Socket.ReceiveText);

Assim vc transfere um Txt para outro PC. Para outros formatos, é o mesmo codigo, basta só trocar a extensão e alguns codigos da socket, blz Brother?? Qualquer coisa me da um toque No E-mail, ou uma MP.
Espero ter ajudado, Henry.


Responder

Gostei + 0

27/09/2003

Lipsil

Valew kra, muito obrigado pela atenção.
Este teu código tem sentido mesmo, ele primeiro passaria o cód fonte de um arquivo e depois salvaria o cód para uma outra máquina, porém, esta operação eu acredito q vá gastar um bucado de memória não acha? ou não?

tipo usando o componente TrivialFTP da indy eu fiz o seguinte e quase q deu, porém ele trava, as vezes não envia, e outros problemas.

pra fazer o upload seria:
  with TrivialFTP do begin
    Host := edtHost.Text;
    Put(edtLocalFile.Text, ExtractFileName(edtLocalFile.Text));
  end;


ok, aí acima enviaria o arquivo do edtlocalfile.
Agora para baixar seria:
var
  strm: TFileStream;
begin
  strm := TFileStream.Create(ExtractFileName(´1´+edtRemoteFile.Text), fmCreate);
  with TrivialFTP do
    try
      Host := edtHost.Text;
      Get(edtRemoteFile.Text, strm);
    finally
      strm.Free;
    end;
end;[quote]
Bem, agora iria pegar o q foi enviado e extrair o mesmo para edtremotefile e assim agora buscar o edtremotefile para o mesmo porém nomeado com o "1" antes...

Mas não esta funfando muito certinho isso :-(....

O q será q poderia ser feito aí?


Valew



Responder

Gostei + 0

27/09/2003

Henry

Brother, o codigo como vc disse, da algumas exceções. Mas em relação a memoria, não fica pesado, por que vc só conecta quando vai envia o arquivo, questão de segundos, se ficasse conectado ia pesa, mas assim é mais rapidinho.... :lol:


Responder

Gostei + 0

27/09/2003

Lipsil

blz então :-)
mas como q seria pra colocar o cód fonte de um arquivo dentro de um memo, e depois de enviado, como salvar o conteudo do memo pra ser o font de um EXE?


Responder

Gostei + 0

27/09/2003

Henry

Coloque o fonte na maquina cliente como texto, ai depois que passa e o servidor recebe, coloque um savedialog e salve como .pas. Ta feita a unidade de delphi, é isso que vc queria mesmo???


Responder

Gostei + 0

27/09/2003

Lipsil

Acho q não kra..

o q queris seria tipo assim, eu tenho aqui o arquivo Teste.EXE, e eu gostaria de passar pra ti por exemplo este arquivo. Então como q eu poderia fazer pra passar esse arquivo pra vc?

pelo seu cód eu vi q poderia fazer copiando o cód fonte do arquivo pra uma máquina a outra, e depois de copiar o arquivo, esse seria salvo como memo1.Lines.SaveToFile(´Teste.exe´); ..... entendeu?

tipo deste teu jeito se o arquivo não for danificado fica blz, e o q vc acha?


Responder

Gostei + 0

27/09/2003

Henry

A ta Brother, entendi, vc que passa um .exe né, entaum, ai seria bom no FTP mesmo.


Responder

Gostei + 0

27/09/2003

Lipsil

Pois é isso mesmo kra....
eu tentei com o ftp do indy, o TrivialFTP q inclusive já vem com um demo junto, só q este é só pra abrir a máquina. e eu queria era além de abrir a máquina para apenas um arquivo, fazer com q só uma máquina pegue este arquivo e depois desconecte esta porta por segurança.. mas estou loko aqui e não ta funfando o cód q eu já passei acima aí....... tu saberia me dizer então como fazer isso?


Valew


Responder

Gostei + 0

27/09/2003

Henry

Brother, é cascadura o bagulho, mas da pra faze sim, vo da uma olhada no que eu tenho aqui de material, e até segunda te do um toque de o que fazer, blz???

Dai te mando um E-mail ou uma MP te contatando.

Um abraço, Henry.


Responder

Gostei + 0

27/09/2003

Lipsil

Pw kra, valew, brigadão mesmo..... :-)

Ficarei no aguardo de contato seu ;-)


Valew


Responder

Gostei + 0

24/10/2003

Xandyr

Cara eu to presissando fz um programa pra upload tb se vc conseguiu resolver o problema, me responda que eu nem sei por onde começar.
Desde já valeu.


Responder

Gostei + 0

24/10/2003

Henry

Brother, Upload é diretamente ligado a FTP. Teu problema se resolve com o componente NMFtp da palheta Fastnet.


Responder

Gostei + 0

24/10/2003

Henry

Brother, Upload é diretamente ligado a FTP. Teu problema se resolve com o componente NMFtp da palheta Fastnet.

Obs: Delphi6


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar