Ajuda com FTP e Pastas e SubPastas
por favor eu achei esse codigo no Clube ele é quase o que eu preciso só que não esotu conseguindo ajustar ele....
o que ocorre:
eu tenho de baixar via FTP arquivos Pastas e SubPastas
Exemplo:
project.exe
V 7.1.22.ver
Diretóorio/SubDiretório/Arquivo.txt
Diretóorio/SubDiretório/Arquivo2.txt
esse código baixa mas não vem tudo de uma vez e se vem as subpastas ficam fora da pasta raiz dela
Exemplo:
project.exe
V 7.1.22.ver
Diretóorio/
SubDiretório/
Arquivo.txt
Arquivo2.txt
por favor alguém pode me dar um help nesse código ou me mostrar outro que funcione.....
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,IdTCPConnection,
IdTCPClient, IdFTP, ComCtrls,IdIntercept,IdAntiFreezeBase, IdAntiFreeze,
IdLogBase, IdLogDebug, IdGlobal, IdLogEvent, IdFTPCommon, IdFTPList,
Buttons;
type
TForm1 = class(TForm)
btnListar: TButton;
IdFTP1: TIdFTP;
btnConectar: TButton;
btnDesconectar: TButton;
ListDiretorios: TListBox;
procedure btnListarClick(Sender: TObject);
procedure ListarDir;
procedure btnConectarClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnDesconectarClick(Sender: TObject);
private
procedure Listar(dir: string);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i : integer;
NomePastaBase,PastaBase,Diretorio, Dir: String;
Valores : TStrings;
implementation
{$R *.dfm}
procedure TForm1.ListarDir;
begin
i := 0;
with IdFTP1 do
begin
List(nil);
while i < DirectoryListing.Count do
begin
if DirectoryListing.Items[i].ItemType <> ditDirectory then
Get(DirectoryListing.Items[i].FileName, dir+DirectoryListing.Items[i].FileName, true)
else
begin
NomePastaBase:= copy(RetrieveCurrentDir,length(PastaBase)+1,length(RetrieveCurrentDir));
ListDiretorios.Items.Add(NomePastaBase+´/´+DirectoryListing.Items[i].FileName);
if not DirectoryExists(dir+DirectoryListing.Items[i].FileName) then
ForceDirectories(dir+DirectoryListing.Items[i].FileName);
end;
i := i+1;
end;
while ListDiretorios.Items.Count - 1 >= 0 do
begin
ChangeDir(PastaBase+ListDiretorios.Items[0]);
Diretorio := ListDiretorios.Items[0]+´/´;
ListDiretorios.Items.Delete(0);
listar(Diretorio);
end;
end;
end;
procedure TForm1.Listar(dir : string);
begin
with IdFTP1 do
begin
List(nil);
while i < DirectoryListing.Count do
begin
if DirectoryListing.Items[i].ItemType <> ditDirectory then
begin
Get(IdFTP1.DirectoryListing.Items[i].FileName, dir+dir+DirectoryListing.Items[i].FileName, true);
end
else
begin
NomePastaBase:= copy(RetrieveCurrentDir,length(PastaBase)+1,length(RetrieveCurrentDir));
ListDiretorios.Items.Add(NomePastaBase+´/´+DirectoryListing.Items[i].FileName);
if not DirectoryExists(dir+DirectoryListing.Items[i].FileName) then
ForceDirectories(dir+DirectoryListing.Items[i].FileName)
end;
i := i+1;
end;
end;
end;
procedure TForm1.btnListarClick(Sender: TObject);
begin
ListarDir();
Showmessage(´Transferência Concluída´);
end;
procedure TForm1.btnConectarClick(Sender: TObject);
begin
with IdFTP1 do
begin
Host := (´ftp.netcrc.ddns.com.br´);
Username := (´teste´);
Password := (´teste´);
Passive := True;
Connect(true);
PastaBase := RetrieveCurrentDir;
end;
btnListar.Enabled := true;
btnConectar.Enabled := false;
btnDesconectar.Enabled := true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Dir:=(´C:\ftp\´);
end;
procedure TForm1.btnDesconectarClick(Sender: TObject);
begin
with IdFTP1 do
begin
Disconnect();
end;
btnListar.Enabled := false;
btnConectar.Enabled := true;
btnDesconectar.Enabled := false;
end;
end.
o que ocorre:
eu tenho de baixar via FTP arquivos Pastas e SubPastas
Exemplo:
project.exe
V 7.1.22.ver
Diretóorio/SubDiretório/Arquivo.txt
Diretóorio/SubDiretório/Arquivo2.txt
esse código baixa mas não vem tudo de uma vez e se vem as subpastas ficam fora da pasta raiz dela
Exemplo:
project.exe
V 7.1.22.ver
Diretóorio/
SubDiretório/
Arquivo.txt
Arquivo2.txt
por favor alguém pode me dar um help nesse código ou me mostrar outro que funcione.....
Crcam
Curtidas 0
Respostas
Mmoreira
21/01/2007
Pessoal,
Tambem estou tendo este problema.
Preciso fazer o download de todos os arquivos, pastas e subpastas que estiver no meu FTP.
Andei procurando e parece que o Indy 10 não faz isso por ele mesmo, no caso teria que fazer um procedure recursiva para varer pasta por pasta.
Tem uma procedure que encontrei aqui mesmo no forum que varre pastas e subpastas de um diretorio informado mas a mesma tecnica nao da pra ser implementada usando o IdFTP.
Alguem ja fez isso ???
Fico ai no aguardo.
T+
Tambem estou tendo este problema.
Preciso fazer o download de todos os arquivos, pastas e subpastas que estiver no meu FTP.
Andei procurando e parece que o Indy 10 não faz isso por ele mesmo, no caso teria que fazer um procedure recursiva para varer pasta por pasta.
Tem uma procedure que encontrei aqui mesmo no forum que varre pastas e subpastas de um diretorio informado mas a mesma tecnica nao da pra ser implementada usando o IdFTP.
Alguem ja fez isso ???
Fico ai no aguardo.
T+
GOSTEI 0