440 Stimmen

Speichern von Bildern aus einer PHP-URL

Ich muss ein Bild von einer PHP-URL auf meinen PC speichern. Angenommen, ich habe eine Seite, http://beispiel.com/bild.php, die ein einzelnes "Blumen" -Bild enthält, nichts anderes. Wie kann ich dieses Bild von der URL mit einem neuen Namen (unter Verwendung von PHP) speichern?

1 Stimmen

Wenn Sie eine große Menge oder Größe von Dateien kopieren, beachten Sie, dass CURL-Methoden bevorzugt werden (wie im 2. Beispiel in der akzeptierten Antwort), da CURL etwa ein Drittel der Zeit wie file_put_contents usw. benötigt.

780voto

vartec Punkte 124396

Wenn Sie allow_url_fopen auf true gesetzt haben:

$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));

Andernfalls verwenden Sie cURL:

$ch = curl_init('http://example.com/image.php');
$fp = fopen('/my/folder/flower.gif', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

281voto

Halil Özgür Punkte 15159

Verwenden Sie die PHP-Funktion copy():

copy('http://example.com/image.php', 'local/folder/flower.jpg');

Hinweis: Dies erfordert allow_url_fopen

82voto

soulmerge Punkte 70900
$inhalt = file_get_contents('http://beispiel.com/bild.php');
file_put_contents('/mein/ordner/blume.jpg', $inhalt);

33voto

stoefln Punkte 13985

Antwort von Vartec mit cURL hat bei mir nicht funktioniert. Er tat es, mit einer leichten Verbesserung aufgrund meines spezifischen Problems.

z.B.,

Wenn es auf dem Server eine Weiterleitung gibt (wie z.B. beim Versuch, das Facebook-Profilbild zu speichern), müssen Sie folgende Option festlegen:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

Die vollständige Lösung lautet:

$ch = curl_init('http://beispiel.com/bild.php');
$fp = fopen('/mein/ordner/blume.gif', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

30voto

Sam152 Punkte 18557

Hier ist ein Beispiel, wie das Fernbild als image.jpg gespeichert wird.

function save_image($inPath,$outPath)
{ //Bilder vom Remote-Server herunterladen
    $in=    fopen($inPath, "rb");
    $out=   fopen($outPath, "wb");
    while ($chunk = fread($in,8192))
    {
        fwrite($out, $chunk, 8192);
    }
    fclose($in);
    fclose($out);
}

save_image('http://www.someimagesite.com/img.jpg','image.jpg');

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X