[PHP] filesize-Problem



  • Hallöchen!

    Ich möchte aus einem Verzeichnis, wo sich unterverzeichnisse befinden, einzeln Dateien rauslesen, sie dann zipen und dann in die Tabelle speichern.
    Leider fehlt mein Skript schon beim filesize fehl, weil er nicht die richtige Größe der Datei liefert.

    So sieht mein Code aus:

    if (is_dir($directory)) {
      $handle = opendir($directory);
      while ($file = readdir ($handle)) {
        if ($file != "." && $file != "..") {
          $fh = fopen ($file, "rb");
          $data = fread ($fh, filesize($file));
          $gzdata = gzcompress($data);
          fclose ($handle);
        }
      }
      closedir($directory);
      $gzdata = addslashes($gzdata);
    }
    

    Und hier sind die Fehlermeldungen:


    PHP Warning: fread(): Length parameter must be greater than 0. in /var/www/xxx/xxx/xxx.php on line 25

    Warning: fread(): Length parameter must be greater than 0. in var/www/xxx/xxx/xxx.php on line 25
    PHP Warning: closedir(): supplied argument is not a valid Directory resource in var/www/xxx/xxx/xxx.php on line 30

    Warning: closedir(): supplied argument is not a valid Directory resource in var/www/xxx/xxx/xxx.php on line 30


    Für jede schnelle Hilfe wäre ich sehr Dankbar!



  • Afaik musst du dir aus $file erst wieder den vollständigen Pfad zusamensetzen 🙂



  • if(is_dir($directory) && ($handle=opendir($directory))!==false) // Fehler behoben und Verbesserung
    {
      while(($file=readdir($handle))!==false) // Fehler behoben
      {
        $file=$directory."/".$file; // Fehler behoben
        if(!is_dir($file)) // Fehler behoben
        {
          $fh=fopen($file,"rb");
          $data=fread($fh,filesize($file));
          $gzdata=gzcompress($data);
          fclose($fh); // Fehler behoben
        }
      }
      closedir($handle); // Fehler behoben
      $gzdata=addslashes($gzdata);
    }
    

    Mann hast du deine Fehler versteckt... musste 4mal meinen Code verbessern 😃



  • DANKE, das habe ich gefixt!

    aber meine nächste Frage:
    Die Datei, die in der DB reingeschreiben ist, hat einen ganz komischen Namen und den kann ich später mit

    is_file
    

    gar nicht mehr aufrufen.

    Was ist denn daran falsch?!
    Das Feld in der DB-Tabelle ist

    longblob
    


  • Datei binär geöfnet vor dem schreiben?

    Oder decompressen vielleicht? o_O


Anmelden zum Antworten