benni: ftp: zwischen ordnern und dateien unterscheiden?

hi!

ich programmiere mir gerade einen browser-ftp-clienten. (bzw. hab heute mittag angefangen ;) ).

jetzt kann ich mir ja alle dateien und ordner ausgeben lassen:

$arr = ftp_nlist($ftp_stream,$verzeichnis);
foreach ($arr as $v)
print " - $v<br>";

aber wie unterscheide ich da jetzt zwischen dateien und ordnern? das is n unix-ftp-server, da brauchen die dateien also nicht unbedingt endungen ;)

viele grüße,
benni

  1. zum beispiel mit

    filetype ()

    der schmeißt dir 'dir' aus, wenn's n verzeichnis ist...
    check mal www.php.net. da steht mehr über den befehl!

    1. das liefert "unkown filetype (0)" zurück...
      liegt warscheinlich daran, dass ich damit ja ftp-files überprüfen will...

      viele grüße,
      benni graf

      1. dann probier's doch mal mir dem is_dir(9 befehl:

        hile ($filename = readdir( $filehandle ))

        if ($filename != ".." && $filename != "." )
        {
         $farray[] = $filename ;
         if ( is_dir($filename) ) { echo "is $filename dir? yes<br>";} else {echo "is $filename dir? no<br>";}
         $fcount++;
        }

        1. da war ich zu hastig.

          die 9 in der ersten zeile soll ein ) sein und statt 'hile' muss es natürlich 'while' heißen.

          1. alter schwede, jetzt nochmal komplett, damit man's auch versteht!

            $dirname = "verzeichnisname";
            $filehandle = opendir( $dirname ); //open directory

            while ($filename = readdir( $filehandle ))
            {
             if ($filename != ".." && $filename != "." )
             {
              if ( is_dir($filename) ) { echo "is $filename dir? yes<br>";} else {echo "is $filename dir? no<br>";}
             }
            }

            1. hier liefert er jedesmal no zurück, auch wenns n verzeichnis ist...

              hier mal meinen text um alles auszugeben:

              <?php

              echo "<h2>Bennis ftp-manager</h2><br>";

              $ftp_stream = ftp_connect("server");
              $ftplogin = ftp_login($ftp_stream,"benni","[ZENSORED]");

              echo "<br>Filelist:<br>";

              $arr = ftp_nlist($ftp_stream,"/");

              for ($i=1;$arr[$i]!="";$i++) {
                echo " - $arr[$i] <br>\n";
              }

              ftp_quit($ftp_stream);

              ?>

  2. Hallo benni,

    aber wie unterscheide ich da jetzt zwischen dateien und ordnern?

    vielleicht mit is_dir() -> http://www.php.net/manual/de/function.is-dir.php?

    Grüße aus Nürnberg
    Tobias

    1. hi!

      wenn ich is_dir($arr[$i]) aus gebe (wobei $arr ein array mit allen dateinamen ist), kommt gar nix raus ( "" ohne die anführungszeichen).

      viele grüße,
      benni

  3. hi!

    also ich mach das jetzt, in dem ich die größe der entsprechenden datei herausfinde. bei ordnern ist die -1...

    net ganz so elegant, aber es funktioniert...

    besten dank trotzdem,
    Benni