Ankündigung

Einklappen
Keine Ankündigung bisher.

dateien ausgeben kein Problem - ABER!

Einklappen

Neue Werbung 2019

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

  • dateien ausgeben kein Problem - ABER!

    Hallo erstmal!
    hab hier mal ein kleines Script welche einen Inhalt in einem Ordner aufliestet.

    mit Dateinamen und der jeweiligen grösse dieser Datei.(funktioniert auch)

    Das script:
    PHP-Code:
    <? 
    function getFiles($path)

      $files = array(); 
      $fileNames = array(); 
      $i = 0; 

      if (is_dir($path))
      { 
      print "Folgende Dateien befinden sich im Ordner: [b]$path[/b]
    ";
        if ($dh = opendir($path))
        { 
           while (($file = readdir($dh)) !== false)
           { 
              if ($file == "." || $file == "..")
                 continue; 
              
              $fullpath = $path . "/" . $file; 
              $fkey = strtolower($file); 
              
              while (array_key_exists($fkey,$fileNames))
                 $fkey .= " "; 
                 
              $a = stat($fullpath); 
              
              $files[$fkey]['size'] = $a['size']; 
              
              if ($a['size'] == 0)
                 $files[$fkey]['sizetext'] = "-"; 
              else if ($a['size'] > 1024)
                 $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " Kbyte"; 
              else if ($a['size'] > 1024*1024)
                 $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mbyte"; 
              else
                 $files[$fkey]['sizetext'] = $a['size'] . " bytes"; 
                 
              $files[$fkey]['name'] = $file; 
              $files[$fkey]['type'] = filetype($fullpath); 
              $fileNames[$i++] = $fkey; 
           } 
              foreach ($files as $file){
              print "<table border=1>";
              print "<tr>";
              print "<td width=180>";
              print "<a href=$path/$file[name]>$file[name]</a>";
              print "<td width=80>";
              print "$file[sizetext]
    \n";
              print "</tr>";
              print "</table>"; 
              }
           
           closedir($dh); 
        }
        else
          die ("Cannot open directory: $path"); 
      }
      else
        die ("Path is not a directory: $path"); 
        
      sort($fileNames,SORT_STRING); 
      
      $sortedFiles = array(); 
      $i = 0; 
      
      foreach($fileNames as $f)
         $sortedFiles[$i++] = $files[$f]; 

      return $sortedFiles; 


    $files = getFiles("upload"); 

    ?>
    Das Problem ist jetzt aber, dass bei "$file[name]" halt Dateiname + Dateiendung angezeigt wird!

    ok man könnte ganz einfach explode() benutzen, nur was macht man wen sich im ordner mal ne Datei mit einem punkt befindet? z.B. hallo.world.txt
    (Dateiname = hallo.world Dateiendung= txt) wie könnte man das am besten lösen? kann man irgendwie sagen er soll den explode erst ab den letzten 4 Zeichen machen? ^o) was hättet ihr für Vorschläge? bin für alles offen =D

    am besten wäre doch schon eine funktion ich habs mal mit:
    PHP-Code:
    <?php
    function dateiname($file){
    list(
    $filename,$fileext) = explode(".",$file);
    array_push ($file$filename);
    array_push ($file$fileext);
    }
    ?>
    wobei:
    1.Das nicht funktioniert, er "pusht" in den array einfach nur "Array" (behauptet var_dump())
    2. Das behebt das Problem nicht das der Dateiname einen . beinhalten könnte.

    ich hoffe ich habe mein Problem gut geschildert und mir kann hier geholfen werde, bin froh um jeden/jede Tipp/Hilfe.
    Wie man Fragen richtig stellt


  • #2
    Und wieder mal verweisen wir auf die Doku: http://de3.php.net/manual/de/function.pathinfo.php

    Gruß
    phpfan

    Kommentar


    • #3
      danke! genau das habe ich gebraucht
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        ist doch nicht ganz das was ich wollte, den ich will ja nur den Dateinamen auch haben

        nochmal ein Beispiel

        ganze Datei:

        hallo.welt.txt

        es soll ausgeben
        hallo.welt

        mit pathinfo() kann ich aber entweder den ganzen namen, das heisst "hallo.welt.txt" ausgeben oder halt nur ".txt"

        das heisst ich müsste von $path_parts["basename"] ; $path_parts["extension"] enfernen, aber wie? ... ich komm mit dem php manual nicht zu recht.. sry
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          ist doch nicht ganz das was ich wollte, den ich will ja nur den Dateinamen auch haben

          nochmal ein Beispiel

          ganze Datei:

          hallo.welt.txt

          es soll ausgeben
          hallo.welt

          mit pathinfo() kann ich aber entweder den ganzen namen, das heisst "hallo.welt.txt" ausgeben oder halt nur ".txt"

          das heisst ich müsste von $path_parts["basename"] ; $path_parts["extension"] enfernen, aber wie? ... ich komm mit dem php manual nicht zu recht.. sry
          Also du willst von $path_parts["basename"] ; $path_parts["extension"] entfernen , oder?
          Dann probier das
          $datei=eregi_replace($path_parts["extension"],"",$path_parts["basename"]);

          So hast zwar nur den Dateinamen in der Variable $datei , aber wenn du eine Datei hello.txt.txt hast , wird nur hello angezeigt.
          Momentan fällt mir sonst nichts ein


          Gruß Ente

          Kommentar


          • #6
            probier einfach mal substr()

            PHP-Code:
            <?php
            // z.b.: $file = hallo.welt.txt
            $filename substr($file0, -4);
            print 
            $filename
            // sollte "hallo.welt" ausgeben 
            ?>
            mfg Andi

            Kommentar


            • #7
              Ich nehm alles zurück wusste nicht das man auch -4 angeben kann

              Kommentar


              • #8
                Zitat von DER_Brain
                probier einfach mal substr()

                PHP-Code:
                <?php
                // z.b.: $file = hallo.welt.txt
                $filename substr($file0, -4);
                print 
                $filename
                // sollte "hallo.welt" ausgeben 
                ?>
                mfg Andi
                Viel Spaß mit einer Datei, die den Namen hallo.welt.html hat.

                Der Weg über pathinfo ist doch sicherer, da kann man die String-Länge von $path_parts["extension"] startt der -4 nehmen.

                Gruß
                phpfan

                Kommentar


                • #9
                  ok an das hab ich nicht gedacht..

                  meine variante is wohl nur dann sinnvoll, wenn man weiß, welche dateien upgeloaded werden.

                  ...

                  mfg Andi

                  Kommentar


                  • #10
                    Zitat von phpfan

                    Der Weg über pathinfo ist doch sicherer, da kann man die String-Länge von $path_parts["extension"] startt der -4 nehmen.

                    Gruß
                    phpfan
                    wie würde den da der Befehl aussehen???
                    Wie man Fragen richtig stellt

                    Kommentar

                    Lädt...
                    X