Мне нужно сохранить изображение с URL-адреса PHP на мой компьютер. Предположим, у меня есть страница, http://example.com/image.php
, где есть один «цветок», ничего больше. Как сохранить это изображение из URL с новым именем (используя PHP)?
Если у вас allow_url_fopen
установлено значение true
:
$url = 'http://example.com/image.php'; $img = '/my/folder/flower.gif'; file_put_contents($img, file_get_contents($url));
Другие используют 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);
copy('http://example.com/image.php', 'local/folder/flower.jpg');
$content = file_get_contents('http://example.com/image.php'); file_put_contents('/my/folder/flower.jpg', $content);
Здесь вы идете, пример сохраняет удаленное изображение в image.jpg.
function save_image($inPath,$outPath) { //Download images from remote server $in= fopen($inPath, "rb"); $out= fopen($outPath, "wb"); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } save_image('http://img.ruphp.com/image/img.jpg','image.jpg');
Ответ Вартека cURL не работал для меня. Это произошло с небольшим улучшением из-за моей конкретной проблемы.
например,
Когда на сервере имеется перенаправление (например, когда вы пытаетесь сохранить изображение профиля facebook), вам понадобится следующий набор параметров:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
Полное решение:
$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_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch); curl_close($ch); fclose($fp);
Я не смог получить какие-либо другие решения для работы, но я смог использовать wget:
$tempDir = '/download/file/here'; $finalDir = '/keep/file/here'; $imageUrl = 'http://img.ruphp.com/image/image.jpg'; exec("cd $tempDir && wget --quiet $imageUrl"); if (!file_exists("$tempDir/image.jpg")) { throw new Exception('Failed while trying to download image'); } if (rename("$tempDir/image.jpg", "$finalDir/new-image-name.jpg") === false) { throw new Exception('Failed while trying to move image file from temp dir to final dir'); }
$img_file='http://img.ruphp.com/image/f' $img_file=file_get_contents($img_file); $file_loc=$_SERVER['DOCUMENT_ROOT'].'/some_dir/test.jpg'; $file_handler=fopen($file_loc,'w'); if(fwrite($file_handler,$img_file)==false){ echo 'error'; } fclose($file_handler);
См. file()
Руководство по PHP :
$url = 'http://img.ruphp.com/image/0ed9320413f3ba172471860e77b15587.jpg'; $img = 'miki.png'; $file = file($url); $result = file_put_contents($img, $file)
Создайте папку с именем images, расположенную в пути, который вы планируете разместить созданный php-скрипт. Удостоверьтесь, что у него есть права на запись для всех или скрипты не будут работать (он не сможет загрузить файлы в каталог).