Axel Richter: Image Download über URL

Beitrag lesen

Hallo,

ich möchte gern externe URLs die auf Bilder verweisen mit einem Request abfragen und den Inhalt, also das Bild in eine Variable einlesen.

Habe mir das ganze mit PHP-PEAR::HTTP_Request zurecht gebaut, klappt auch schon prima, leider bekomme ich aber bei ganz wenigen Servern Probleme beim einlesen der Grafiken:

http://www.quelle.de/cgi/kooperation.cgi?action=picture&idname=/cgi/getblob/100000738692.jpg&filename=90/100000178334_a_112.jpg&idname=/cgi/getblob/100000738701.jpg&filename=8

Wenn ich bei denen die Fotos abfrage bekomme ich als Response nur die ersten paar Zeilen der Grafik,

Bist Du sicher, dass es Grafikteile sind? Oder kann es auch eine 404-Error-Seite sein?

wenn ich die URL aber direkt über den Browser aufrufe klappt es ... Habe da auch versucht mit fsockopen, fopen, file_get_contents ranzukommen, aber immer wieder nur die ersten paar Zeilen.

Hm, bei mir funktioniert:

  
<?php  
error_reporting(E_ALL);  
$handle = fopen("http://www.quelle.de/cgi/kooperation.cgi?action=picture&idname=/cgi/getblob/100000738692.jpg&filename=90/100000178334_a_112.jpg&idname=/cgi/getblob/100000738701.jpg&filename=8", "rb");  
$contents = '';  
while (!feof($handle)) {  
  $contents .= fread($handle, 8192);  
}  
fclose($handle);  
  
header("Content-Type: image/jpeg");  
echo $contents;  
?>  

Ich kenne mich mit HTTP etc. nicht so aus, ich kann mir auch nicht erklären wieso ich da nur Bruchteile zurückbekomme. Evtl. sowas wie ein Redirect oder ähnlich ...

Wie gesagt, es kann sein, dass Du einen 404 zurück bekommst, nämlich dann, wenn PHP-PEAR::HTTP_Request nicht die ungültige URI, sondern eine ordentlich encodierte URI sendet, so:

GET /cgi/kooperation.cgi?action=picture&idname=%2Fcgi%2Fgetblob%2F100000738692.jpg&filename=90%2F100000178334_a_112.jpg&idname=%2Fcgi%2Fgetblob%2F100000738701.jpg&filename=8 HTTP/1.1[CRLF]

Dann gibt das von Quelle ein:
HTTP Status Code: HTTP/1.1 404 Not Found

viele Grüße

Axel