globe: Web-Bild lokal speichern

Beitrag lesen

n'abend,

Alles kann eingeschaltet werden, ist ja mein Heimrechner. Mit HTTP hatte ich auch schonmal Seiten mit PHP geöffnet/angefragt. Aber wie sage ich denn speicher Bild example.com/test.gif unter c:\test.gif bzw. /home/me/test.gif.

Tom hat dir ja bereits eine Lösung mit file_get_contents() geliefert. Der Komplettheit halber hier noch eine Variante, der die Direktive allow_url_fopen egal ist [1]:

 $host = 'hilfe.selfhtml.org';  
$file = '/gib/mir/hilfe.png';  
// Verbindung zum Webserver aufbauen  
$fh = fsockopen( $host );  
// Anfrage für http://hilfe.selfhtml.org/gib/mir/hilfe.png absetzen  
fputs( $fh, 'GET '. $file . " HTTP/1.1\r\n" );  
fputs( $fh, 'Host: '. $host . "\r\n" );  
fputs( $fh, "Connection: close\r\n\r\n" );  
  
// Antwort vom Webserver lesen  
$response = '';  
while( !feof( $fh ) )  
  $response .= fread( $fh, 8192 );  
  
// Verbindung schliessen  
fclose( $fh );  
  
// header von content separieren  
$response = explode( "\r\n\r\n", $response, 1 );  
$header = explode( "\r\n", $response[0] );  
$content = isset( $response[1] ) ? $response[1] : null;  
  
// an dieser Stelle könnte mit den Headern gearbeitet werden  
// z.B. Location Header verfolgen, Fehlerbehandlung falls Datei nicht vorhanden, etc  
  
// Datei vom Server lokal speichern  
$lfh = fopen( 'C:\ouput.png', 'w' );  
fwrite( $lfh, $content );  
fclose( $lfh );

---
[1] ungetestet, da frei runtergetippt

weiterhin schönen abend...

--
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|