Ankündigung

Einklappen
Keine Ankündigung bisher.

NLIST oder Rawlist

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • NLIST oder Rawlist

    Moin Moin...

    Folgendes Problem:
    ich habe viele Dateien auf meinem Webserver (Wetterdaten).
    jetzt möchte ich gezielt Daten herunterladen, tue mich aber schwer beim finden der Datei.

    Beispiel:
    auf dem Server liegen folgenden Dateien
    20000124.txt
    20000125.txt
    20000126.txt

    Also über die Dateinamen finde ich das jetzt nicht heraus, also brauch ich andere Kriterien.
    -rw-r--r-- 1 nax022b nax022b 44196 Oct 28 2007 20000124.txt
    -rw-r--r-- 1 nax022b nax022b 44018 Oct 28 2007 20000125.txt
    -rw-r--r-- 1 nax022b nax022b 45343 Oct 28 2007 20000126.txt
    USW.

    Also hab ich mir so geholfen:
    <?php
    $ftp_server = "IP_des_Servers" ;
    $ftp_user_name = "Username" ;
    $ftp_user_pass = "Passwort" ;
    $remote_pfad = "html/aktuell/";
    // ----------------------------------------------------------------

    $link = ftp_connect($ftp_server);
    if (!ftp_login($link, $ftp_user_name, $ftp_user_pass)) {
    echo "Login gescheitert. <br>";
    } else {
    echo "Erfolgreicher Verbindungsaufbau <br>";
    }
    // ----------------------------------------------------------------

    if (ftp_chdir($link, $remote_pfad)) {
    echo "Aktuelles Verzeichnis: " . ftp_pwd($link) . "<br>"; // zeigt nur, wo ich mich befinde, wird später nichtgebraucht.
    }
    // ----------------------------------------------------------------
    $dateiname = ftp_rawlist($link,".");
    $result = count($dateiname);
    $x = 2 ;
    while ($x < $result) {
    echo "$dateiname[$x] <br>";
    $ndateiname[$x] = substr($dateiname[$x],-25) ;
    echo "$ndateiname[$x] <br>";
    list ($x1, $x2,$x3, $x4, $x5) = split('[ ]', $ndateiname[$x] );
    echo "<b>Monat</b> $x1 <br>";
    echo "<b>Tag</b> $x2 <br>";
    echo "<b>?</b> $x3 <br>";
    echo "<b>Jahr</b> $x4 <br>";
    echo "<b>Dateiname</b> $x5 <br>";
    echo "-----------------------------------------<br>";
    $x++ ;
    }
    ?>

    Okay, der macht schonmal das was ich will, aber nur, wenn die Länge des Dateinamens immer gleich ist.
    ----------------------------------------
    -rw-r--r-- 1 nax022b nax022b 3260 Oct 28 2007 20070501.txt
    Oct 28 2007 20070501.txt
    Monat Oct
    Tag 28
    ?
    Jahr 2007
    Dateiname 20070501.txt
    ----------------------------------------
    Allerdings bin ich damit nicht ganz glücklich, weil dort wo das Fragezeichen steht ... da fehlt was :
    Also scheint mein LIST Befehl falsch zu sein.
    Und was mache ich , wenn die Länge des Dateinamens schwankt.
    Also kann $ndateiname[$x] = substr($dateiname[$x],-25) ; nicht richtig sein, das müsste irgendwie flexibel gestaltet werden.
    Was auch ein wenig irritiert ist, das er OCT ausgibt, statt einfacher 10.

    Frage, hat jemand von euch eine Idee, wie ich das verbessern kann?

    Vielen Dank vorab für Anregungen und Tipps.
    Gruss, Peter

  • #2
    Hallo,

    du schreibst, du willst gezielt Daten herunterladen: Wieso bastelst du dir dann aus den benötigten Eingaben nicht selbst den Dateinamen und lädst die Datei?

    Kommentar


    • #3
      Oct 28 2007 20070501.txt
      Monat Oct
      Tag 28
      ?
      Jahr 2007
      Dateiname 20070501.txt
      Was fehlt denn da?

      Kommentar


      • #4
        Hallo David,

        Das Original:
        $ndateiname = "-rw-r--r-- 1 nax022b nax022b 44196 Oct 28 2007 20000124.txt"
        gekürzt auf die letzen 25 Zeichen
        $ndateiname= substr($dateiname,-25) ;
        list ($x1, $x2,$x3, $x4, $x5) = split('[ ]', $ndateiname );
        echo "<b>Monat</b> $x1 <br>";
        echo "<b>Tag</b> $x2 <br>";
        echo "<b>?</b> $x3 <br>";
        echo "<b>Jahr</b> $x4 <br>";
        echo "<b>Dateiname</b> $x5 <br>";

        Du fragst, was fehlt ?
        Was steht nach dem LIST in $x3 ?

        Gruss, Peter

        Kommentar


        • #5
          Zitat von phpler Beitrag anzeigen
          Hallo,

          du schreibst, du willst gezielt Daten herunterladen: Wieso bastelst du dir dann aus den benötigten Eingaben nicht selbst den Dateinamen und lädst die Datei?
          Moin...
          In dem Ordner liegen ganz viele Dateien
          Die sind beispielsweise gestern, vorgestern, und vor einer Woche automatisch hochgeladen worden.
          Ich will mir aber nur die Dateien die heute hochgeladen wurden anzeigen lassen. Mir aus den benötigten Eingaben den passenden Dateinamen zu basteln, wäre das Pferd von hinten aufsatteln.
          Es muss doch die Möglichkeit geben nur die Dateien, die heute oder Gestern auf den Server geladen wurden anzeigen zu lassen.

          Gruss, Peter

          Kommentar


          • #6
            Zitat von wetteronkel Beitrag anzeigen
            Du fragst, was fehlt ?
            Was steht nach dem LIST in $x3 ?
            Das leere $x3 tritt bei mir nicht auf.
            Warum kürzt Du die Zeichenkette auf 25 Zeichen?
            Hast Du schon ausprobiert, ob mit Eurem FTP Server PHP: ftp_mdtm - Manual funktioniert?

            Kommentar


            • #7
              Zitat von David Beitrag anzeigen
              Das leere $x3 tritt bei mir nicht auf.
              Warum kürzt Du die Zeichenkette auf 25 Zeichen?
              Hast Du schon ausprobiert, ob mit Eurem FTP Server PHP: ftp_mdtm - Manual funktioniert?

              mmmh...
              Also, jetzt kratz ich mir am Kopf, aber okay, davon hört das Jucken auch nicht auf...

              ich habe mal folgendes gemacht (Dank dem Hinweis auf FTP_MDTM...)

              $counter = 0 ;
              $name = ftp_nlist($link, ".");
              $result = count($name);
              while ($counter < $result) {
              $dateiname = $name[$counter] ;
              // get the last modified time
              $buff = ftp_mdtm($link, $dateiname);
              if ($buff != -1) {
              echo "$dateiname was last modified on : " . date("F d Y H:i:s.", $buff);
              } else {
              echo "Couldn't get mdtime";
              }
              echo "<br><br>";
              $counter++ ;
              }

              Yep, jetzt bekomme ich genau die Info, die ich haben wollte.
              Perfekt geholfen !
              Danke.
              ich muss mich da mal nochmehr einlesen, das ist ein hochspannendes Thema Man muss aber wissen wo man was findet und das war dein Denkanstoss allemal wert.

              Gruss, Peter

              Kommentar

              Lädt...
              X