phpbar.de logo

Mailinglisten-Archive

[php] Datei mit PHP aus dem Internet laden

[php] Datei mit PHP aus dem Internet laden

Albert Scholl php_(at)_phpcenter.de
Sun, 4 Aug 2002 00:06:06 +0200


Hallo!

Ich habe bisher noch nichts mit Dateizugriff in PHP gemacht.
Jetzt versuche ich ein kleines Script zu schreiben, das mir eine Datei
aus dem Internet in einen lokalen Ordner lädt.

Nach einigen Versuchen mit den Dateisystemfunktionen von PHP kam ich
zu folgendem kleinen Script:

[SOURCECODE]
<?php
   $anzahl = 1;
   $loadThis[0][0] = "http://www.mypage.de/mypicture.gif";
   $loadThis[0][1] = "mypicture.gif";

   for ($i=0; $i < $anzahl; $i++ ) {

      $inFile  = fopen( $loadThis[$i][0], "rb" );
      $outFile = fopen( $loadThis[$i][1], "w" );

      $buff = fread( $inFile, 1000000 );
      fwrite( $outFile, $buff );

      fclose ( $outFile );
      fclose ( $inFile );
   }
?>
[/SOURCECODE]

Das Script legt das Bild im gleichen Verzeichnis ab, wie das Script
selbst liegt.

Allerdings ist das Bild beschädigt (es wird im Bildbetrachter kein
Bild angezeigt).

Ich habe festgestellt, dass das Bild größer ist als wenn ich das Bild
aus dem Browser heraus speichere (1069 Bytes -> 1075 Bytes).

Im Hexeditor hab ich dann nach einigem Suchen die Unterschiede fest-
gestellt. Es wurde überall '0A' durch '0D0A' (hex) ersetzt.
Da ich nebenbei auch C++ Programmiere und dort sehr viel mit Dateien
arbeite weiss ich, das '0A' und '0D0A' zwei verschiedene Arten von
Zeilenumbruch sind (Unix '0A' und Windows '0D0A' glaub ich).

Eigentlich sollte der Parameter "rb" bei fopen die Datei aber im
binary-mode öffnen. Hier dürfte also der Zeilenumbruch als solcher
also nicht von Belang sein, da die Datei ja keinen Text sondern
Binärdaten darstellt.

Kann mir jemand sagen was ich hier falsch mache?

Vielleicht relevante Informationen:
- Betriebssystem: Windows XP Professional
- Webserver: FoxServ v.2.1 mit
   - Apache v.1.3.22
   - PHP v.4.1.1

-- 
Gruß
Albert
Mail: mailto:php_(at)_zzzweistein.de


php::bar PHP Wiki   -   Listenarchive