Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсивное скачивание картинок, с помощью curl 
V
    Опции темы
Рыжий
Дата 14.12.2011, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Здравствуйте!
У меня есть список ссылок на картинки (размещенных на другом хосте), которые необходимо скачать к себе. Для этого использую curl.

Список ссылок выглядит так:
Код

$urls = array("http://abc.net/123.jpg",
"http://abc.net/124.jpg",
"http://abc.net/125.jpg");

Все картинки существуют и доступ по HTTP к ним есть.

Код curl:
Код

foreach($urls as $url){
//Получаем название картинки, в итоге будет к примеру 123.jpg 
        $tmp = strtolower(strrchr($url,"/"));
        $pic_name = substr($tmp,1);

        $ch = curl_init($url);

        //Конечный файл:
        $file = "pics/".$pic_name;
        $save = fopen($file,"w");

        curl_setopt($ch, CURLOPT_HEADER, 0);
        $useragent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:6.0.2) Gecko/20100101 Firefox/6.0.2";
        curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        //Сохраняем файл:
        curl_setopt($ch, CURLOPT_FILE, $save);

        curl_exec($ch);
        curl_close($ch);

        fclose($save);
}

Никаких ошибок - curl_exec возвращает true.

Если скармливать curl одну ссылку на одно изображение (вообще без рекурсии) все ок - он его скачивает и сохраняет.
Если запускать граббер в цикле (даже если всего 2 ссылки) - curl создает файлы и я их вижу через FTP. Но при попытке к ним обратиться - получаю 404 File not found. Файлы есть, но похоже, что они скачиваются не полностью smile 

В чем может быть проблема? Можно ли curl так гонять в цикле?

Спасибо!

Это сообщение отредактировал(а) Рыжий - 14.12.2011, 18:21
PM MAIL ICQ   Вверх
Рыжий
Дата 14.12.2011, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Решил)
На будущее: как не удивительно, надо проверять все символы в названии создаваемых файлов, особенно скрытые. 
Т.к. urls я парсил из файла, где каждая ссылка была на отдельной строке - в конце каждой ссылки оказался символ переноса строки. Он перешел в название так:
Цитата

123.jpg\n

Файл создавался, но curl в него ничего не записывал.

Это сообщение отредактировал(а) Рыжий - 14.12.2011, 22:44
PM MAIL ICQ   Вверх
$дмитрий
Дата 14.12.2011, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: нет
Всего: 45



Цитата

в конце каждой ссылки оказался символ переноса строки

Чтобы избежать такой ситуации можно использовать флаг FILE_IGNORE_NEW_LINES
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.