Chrisi: Image Download über URL

Hallo zusammen,

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, 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.

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 ...

Ist hier vielleicht jemand der mehr sieht, oder dem etwas auffällt was besonders oder anders an diesem Aufruf sein kann ? Oder kriegt es vielleicht sogar jemand hin diese URL einzulesen ?

Ich bin ratlos,

Danke für jeden Tipp, Chrisi ...

  1. 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

    1. Hi,

      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:

      Danke Axel. Dein Posting hat mich auf die Idee gebracht die/den URL zu prüfen der letzten Endes durch die Scripte gegangen ist. Es war hier so das Teile encodiert waren, daher kam dann tatsächlich ein 404 zurück. Der ist mir nicht aufgefallen weil ich über PEAR auf 404 prüfe, habe mir da selber eine Grube gegraben ;-)

      Danke und Gruß

      Chrisi ...