как скачать изображения в папку в php - PullRequest
1 голос
/ 15 мая 2011

Я хочу загрузить изображение с URL, но оно не загружается. Пожалуйста, проверьте код и скажите, где я ошибаюсь.

<?php
$ch = curl_init ("http://l1.yimg.com/t/frontpage/cannes_anjelina_60.jpg");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec ($ch);
curl_close ($ch);
$fp = fopen("img.jpg",'w');
fwrite($fp, $rawdata);
fclose($fp);
?>

Ответы [ 3 ]

1 голос
/ 21 сентября 2013
function download_image ($url, $the_filename) {

    $cookie = tempnam ("/tmp", "CURLCOOKIE");
    $ch = curl_init ($url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Debian) Firefox/0.10.1");
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
    curl_setopt($ch, CURLOPT_ENCODING, "");
    curl_setopt($ch, CURLINFO_EFFECTIVE_URL, true);
    curl_setopt($ch, CURLOPT_REFERER, "http://tomakefast.com");
    curl_setopt($ch, CURLOPT_POST, false);
    $rawdata=curl_exec($ch);
    curl_close($ch);
    file_put_contents("../somewhere/". $the_filename, $rawdata);

}

Если вы видите какие-либо проблемы, пожалуйста, дайте мне знать. Это иногда дает мне 0-байтовый файл изображения, но это может произойти по ряду причин. Это может быть улучшено, чтобы возвращать false на 0 байтов, возможно, даже сделать базовый тест, чтобы увидеть, действительно ли загружено изображение.

1 голос
/ 15 мая 2011

Работает нормально, установите правильные права доступа к файлу, где изображение должно быть сохранено.В этом случае это та же папка, где находится ваш скрипт, возможно, вы захотите переместить его в другое место, например:

// where "images" folder can be written with files
// set permissions to 0755
$fp = fopen("images/img.jpg",'w');
0 голосов
/ 07 мая 2013

вместо этого вы можете использовать этот простой код, если считаете, что он лучше.

$img_file = file_get_contents("http://l1.yimg.com/t/frontpage/cannes_anjelina_60.jpg");
file_put_contents("myImage.jpg", $img_file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...