2016-05-31 16 views
2

korrekt zu laden Ich versuche, ein Remote-Bild mit Curl herunterladen, es lädt eine Datei jedoch wenn ich versuche, das Bild auf meinem Mac zu öffnen - ich bekomme ein 'konnte nicht geöffnet werden ' Botschaft.Nicht in der Lage, Remote-Image-Datei in PHP mit Curl

Ich kann den Dateinamen sehen & Erweiterung sind intakt aber irgendwie hat es nicht so richtig gespeichert, da die Dateigröße 177 Bytes ist, aber ich erwarte die Dateigröße um 3kb zu sein.

Kann jemand vorschlagen, warum das ist? Verhindert die Remote-Site, dass ich die Datei irgendwie herunterladen kann? Ich habe diesen Code mit einigen anderen Bildern auf anderen Seiten ausprobiert und es funktioniert gut ??

$url = 'http://www.fifaindex.com/static/FIFA16/images/crest/256/light/21.png'; 
    $saveto = '21.png'; 

    $ch = curl_init ($url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
    $raw = curl_exec($ch); 
    curl_close ($ch); 
    if(file_exists($saveto)){ 
     unlink($saveto); 
    } 
    $fp = fopen($saveto,'x'); 
    fwrite($fp, $raw); 
    fclose($fp); 
+1

Die URL http://www.fifaindex.com/static/FIFA16/images/crest/256/light/21.png ist ungültig? –

+0

Die URL oben, wenn geklickt wird, scheint ein PNG für mich zu laden? Erhalten Sie kein Logo eines Fußballclubs? – Zabs

+0

Nein, ich bekomme einen 404 Not Found Fehler. Bitte überprüfen Sie den Inhalt Ihrer heruntergeladenen Datei mit einem Texteditor, um zu sehen, was Sie bekommen haben. –

Antwort

0

Die Website, die Sie versuchen, aus dem Bild zu bekommen, hinzugefügt wahrscheinlich eine Einschränkung, so dass, wenn das Bild von außerhalb der Domäne genannt wird, nicht bedient werden.

Um dies zu umgehen, können Sie den Referrer in Ihren CURL-Optionen angeben, indem Sie ihn mit der URL der Site festlegen, von der Sie das Image erhalten möchten.

In Ihrem Fall

curl_setopt($ch, CURLOPT_REFERER, "http://www.fifaindex.com"); 

Ich versuchte, es mir auf meinem lokalen Server und es funktionierte.

+0

genialer Igor, der den Trick zu machen scheint :) – Zabs