Mailinglisten-Archive |
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