Compartilhar file via web
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
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
Curtidas 0
Respostas
Henry
27/09/2003
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.
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.
GOSTEI 0
Lipsil
27/09/2003
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:
ok, aí acima enviaria o arquivo do edtlocalfile.
Agora para baixar seria:
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
GOSTEI 0
Henry
27/09/2003
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:
GOSTEI 0
Lipsil
27/09/2003
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?
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?
GOSTEI 0
Henry
27/09/2003
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???
GOSTEI 0
Lipsil
27/09/2003
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?
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?
GOSTEI 0
Henry
27/09/2003
A ta Brother, entendi, vc que passa um .exe né, entaum, ai seria bom no FTP mesmo.
GOSTEI 0
Lipsil
27/09/2003
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
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
GOSTEI 0
Henry
27/09/2003
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.
Dai te mando um E-mail ou uma MP te contatando.
Um abraço, Henry.
GOSTEI 0
Lipsil
27/09/2003
Pw kra, valew, brigadão mesmo..... :-)
Ficarei no aguardo de contato seu ;-)
Valew
Ficarei no aguardo de contato seu ;-)
Valew
GOSTEI 0
Xandyr
27/09/2003
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.
Desde já valeu.
GOSTEI 0
Henry
27/09/2003
Brother, Upload é diretamente ligado a FTP. Teu problema se resolve com o componente NMFtp da palheta Fastnet.
GOSTEI 0
Henry
27/09/2003
Brother, Upload é diretamente ligado a FTP. Teu problema se resolve com o componente NMFtp da palheta Fastnet.
Obs: Delphi6
Obs: Delphi6
GOSTEI 0