Avatar billede michael-schou Novice
01. april 2013 - 16:42 Der er 9 kommentarer og
1 løsning

Hvordan downloader man alle filer fra en bestemt FTP mappe med IdFTP?

Hej Eksperten (Igen) :-)

Så har jeg et nyt spørgsmål.

Er der nogen der ligger inde med en rutine til at downloade alle filer fra en bestemt FTP mappe?

Jeg kunne forstille mig at man kunne gøre noget i denne stil :

IdFTP1.ChangeDir('/Test-Mappe/Under-Test-Mappe1/');
IdFTP1.List;

Og så et eller andet med noget IdFTP1.Get(...);

Jeg har ikke rigtigt kunne finde noget brugbart på nettet, så hvis der er en herinde der har et hint eller en rutine ville det være super :-)

Takker på forhånd.

Mvh.

Michael.
01. april 2013 - 17:35 #1
HEJ,

Lige et spørgsmål:

Ved du FØR du starter hvor mange filer (= filnavne), der er tale om ? (inkl HTM, JS, Css etc).

Eller skal rutinen selv finde alle filer (= filnavne) og så hente
"hele bundtet" (á la Internet Download ) ?

Kristian
Avatar billede michael-schou Novice
01. april 2013 - 21:29 #2
Rutinen skal selv finde alle filer og
hente dem alle sammen, MEN der er ikke nogen under mapper
det er KUN filer.

//Michael.
Avatar billede kroning Nybegynder
01. april 2013 - 22:56 #3
Det er nu meget enkelt, du bruger bare List proceduren.

var
    i : integer;
  Filnavn : string;
begin
    IdFTP1.Host:='';
  IdFTP1.Username:='';
  IdFTP1.Password:='';

  IdFTP1.Connect;
  IdFTP1.ChangeDir(''); //Evt..

  IdFTP1.List;

    for i:=0 to IdFTP1.ListResult.Count-1 do
  begin
      Filnavn:=Copy(IdFTP1.ListResult[i],43,MaxInt);
      IdFTP1.Get(Filnavn,'c:\hk\ftp\'+Filnavn,true);
  end;

    IdFTP1.Disconnect;
end;
Avatar billede michael-schou Novice
02. april 2013 - 19:55 #4
Hej Kroning.

Dit eksempel virker ikke helt som det skal, det eneste den henter er denne fil uden extension på : 2048 Mar 31 19 - den er på 0 kb.

Jeg har 2 filer liggende i mappen på FTP'en  men de bliver ikke hentet.

Er der noget jeg gør galt? :-)
Avatar billede kroning Nybegynder
02. april 2013 - 20:43 #5
Smid en TMemo på din form og se hvad du egentlig modtager med List proceduren.

Skriv:
  Memo1.Lines.AddStrings(IdFTP1.ListResult);

Lige efter IdFTP1.List;
Avatar billede michael-schou Novice
02. april 2013 - 20:50 #6
Her er hvad jeg modtager med List proceduren :

drwxr-xr-x    2 957983    959401          2048 Mar 31 19:31 .
drwxr-xr-x    3 957983    959401          2048 Mar 29 20:04 ..
-rwxr-xr-x    1 957983    959401            366 Mar 31 19:31 Test1.bst
-rwxr-xr-x    1 957983    959401            366 Mar 31 19:31 Test2.bst
Avatar billede kroning Nybegynder
02. april 2013 - 22:00 #7
Den liste jeg modtager er helt anderledes, men det kommer måske an på ftp serveren eller Indy versionen ?

Min ser således ud:
type=file;modify=20121104211610;size=260; 2010-1.txt
type=file;modify=20121104211611;size=663; 2010-10.txt
type=file;modify=20121104211611;size=537; 2010-11.txt
type=file;modify=20121104211612;size=685; 2010-12.txt

Men så skal du bare bruge i stedet:
  for i:=2 to IdFTP1.ListResult.Count-1 do
  begin
      Filnavn:=Copy(IdFTP1.ListResult[i],62,MaxInt);
      IdFTP1.Get(Filnavn,'c:\hk\ftp\'+Filnavn,true);
  end;
Avatar billede kroning Nybegynder
02. april 2013 - 22:27 #8
Kikkede lidt mere på det og det er en meget lettere løsning:

  IdFTP1.List;
    for i:=0 to IdFTP1.DirectoryListing.Count-1 do
  begin
        Filnavn:=IdFTP1.DirectoryListing.Items[i].LocalFileName;
        IdFTP1.Get(Filnavn,'c:\hk\ftp\'+Filnavn,true);
  end;
Avatar billede michael-schou Novice
03. april 2013 - 20:08 #9
Tak Kroning.

Den anden sidste kode du lavede virker perfekt, skulle bare ændre 62 til 63 :-)

Den sidste kode henter ikke nogen filer.

Smid et svar så får du point :-)

Og mange tak igen.
Avatar billede kroning Nybegynder
03. april 2013 - 20:14 #10
Men løsningen med DirectoryListing er nok den bedste af de 2
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester