2013-02-27 2 views
2

У меня есть файл изображения. Пример: http://images5.fanpop.com/image/photos/31100000/random-random-31108109-500-502.jpgСохранение изображения прямо в каталог на PHP?

Я хочу сохранить изображение в каталоге под названием images-folder на моем хосте. Какой был бы лучший способ сделать это с помощью PHP?

+2

да Вы уверены, что можете. – Nick

+1

http://stackoverflow.com/questions/724391/saving-image-from-php-url-using-php – CharliePrynn

+0

http://www.edmondscommerce.co.uk/php/php-save-images-using-curl/"' imagecreatefromjpeg ($ img); 'где $ img - это URL для внешнего изображения. Сам сайт имеет дело с« что если ваш хост отключил это » – AmazingDreams

ответ

10

Да, это очень просто. Вот немного cURL скрипт, чтобы сделать только что:

$image_link = "http://images5.fanpop.com/image/photos/31100000/random-random-31108109-500-502.jpg";//Direct link to image 
$split_image = pathinfo($image_link); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL , $image_link); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$response= curl_exec ($ch); 
curl_close($ch); 
$file_name = "images-folder/".$split_image['filename'].".".$split_image['extension']; 
$file = fopen($file_name , 'w') or die("X_x"); 
fwrite($file, $response); 
fclose($file); 

Это должно делать то, что вы хотите. Он сохранит изображение в каталоге, а затем назовите его как random-random-31108109-500-502 < -filename .jpg < -расширение.

+0

Большое спасибо ... Его работа .. –

0

Вот еще один, несколько легче следовать, примеру, прямо с сайта я прокомментировал

$remote_img = 'http://www.somwhere.com/images/image.jpg'; 
$img = imagecreatefromjpeg($remote_img); 
$path = 'images/'; 
imagejpeg($img, $path); 

http://www.edmondscommerce.co.uk/php/php-save-images-using-curl/

+0

Объясните нижний план, пожалуйста. – AmazingDreams

+2

Я не понимаю, почему вы решили проголосовать за вашу работу по решению, я буду голосовать за вас, потому что ваш ответ является подлинным. – 2013-02-27 17:10:35

+3

Вам не нужно читать файл как изображение для загрузки изображения. Вы выделяете всю эту память и создаете редактируемый буфер изображений со всеми служебными данными, связанными с этим JUST, чтобы сохранить изображение. Это не будет масштабироваться. Также вы представляете угрозу безопасности, предлагая PHP интерпретировать удаленный файл как JPEG. Эксплоиты libjpeg не известны. Это причины, по которым я ниспровергаю. – hsanders

8

Даже проще без cURL:

<?php 
    $link= "http://images5.fanpop.com/image/photos/31100000/random-random-31108109-500-502.jpg"; 
    $destdir = 'images-folder/'; 
    $img=file_get_contents($link); 
    file_put_contents($destdir.substr($link, strrpos($link,'/')), $img); 
?> 
+0

, используя этот способ, приведет к повреждению изображения, которое невозможно открыть – atom2ueki

Смежные вопросы