Peter Thomassen: fgets bei GIF oder PDF - nur die ersten paar Bytes?

Hi ihr,
wenn ich mit fgets den Inhalt einer GIF- oder PDF-Datei einzulesen
versuche, sind anschließend in meiner Zielvariablen nur die ersten
paar Bytes. Wieso?

Code:
  $fp = fopen($file,"r");
  $content = fgets($fp,filesize($file) + 1);
  fclose($fp);

Hoffe, dass ihr mir helfen könnt. readfile() kann ich nicht ver-
wenden, weil der Content nicht ausgelesen, sondern in eine Daten-
bank geschrieben werden soll.

Bye,
Peter

  1. Moin,

    wenn ich mit fgets den Inhalt einer GIF- oder PDF-Datei einzulesen
    versuche, sind anschließend in meiner Zielvariablen nur die ersten
    paar Bytes. Wieso?

    Steht doch in der Doku: "Reading ends when length - 1 bytes have been read, on a newline (which is included in the return value), or on EOF (whichever comes first)." http://www.php.net/manual/en/function.fgets.php

    Bei dir wird wahrscheinlich Fall 2 eintreten, du hast also einen Zeilenumbruch gefunden.

    Hoffe, dass ihr mir helfen könnt. readfile() kann ich nicht ver-
    wenden, weil der Content nicht ausgelesen, sondern in eine Daten-
    bank geschrieben werden soll.

    Dann nimm fread() als Ersatz für fgets(), dass hält bei einem Zeilenumbruch nicht an.

    Weitere Möglichkeiten:
    $content = implode("", file($file) ); // Mein Liebling

    oder

    ob_start();
    readfile($file);
    $content=ob_end_clean(); // Warum einfach wenn es auch kompliziert geht ;)

    --
    Henryk Plötz
    Grüße aus Berlin

    1. Hi,

      $content = implode("", file($file) ); // Mein Liebling

      Wir haben was gemeinsam - Danke!

      Bye,
      Peter ;o)