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?
Antworten
Zu viele Anzeigen?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);
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
soulmerge
Punkte
70900
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);
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');
- See previous answers
- Weitere Antworten anzeigen
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.