2016-01-04 3 views
-1

я следующий кодом:File_put_content различных изображений и переименовывать со счетом

$url = explode('\n', $urls); 
    $count = 0; 
    foreach($url as $image) { 
    $img = 'c://wamp/www/www.mysite.com/uploads/images/cat1/image'.$count++.'.png'; 
    file_put_contents($img, $image); 
    } 

В переменных $ URLs имеет множество ссылок с изображениями в формате .png.

Я пытаюсь создать foreach для каждого нового изображения, например, image1.png, image2.png. Она не работает:

Спасибо за любую помощь

+0

* Это не работает * - Что не работает? Не считается ли это правильно? Вы получаете сообщение об ошибке? – mezmi

+1

Это создает файлы изображений, названные с графом должным образом. Но изображения открыты при открытии. Я попробовал предложения ниже, а также не удалось – Gislef

ответ

2

Если вы хотите сохранить данные изображения в файле, вам нужно будет извлечь его из URL:

$url = explode('\n', $urls); 
    $count = 0; 
    foreach($url as $image) { 
    $img = 'c://wamp/www/www.mysite.com/uploads/images/cat1/image'.$count++.'.png'; 
    file_put_contents($img, file_get_contents($image)); 
    } 
+0

Спасибо. Правильно создает последовательность изображений, но правильно создается только первое изображение. Другие изображения пустые и php появляется ошибка для всех изображений: Warning: file_get_contents ('https: // urlimage'): не удалось открыть поток: недопустимый аргумент в C: \ wamp \ www \ www.www.mysite.com \ site \ home.php в строке 59 – Gislef

+0

@Zeli вы пытались открыть проблемы с URL-адресами в браузере? Они загружаются нормально? – Steve

+0

Да изображения обычно переносятся при открытии в браузере – Gislef

1

Ваш код

file_put_contents($img, $image); 

будет помещать содержимое файла $ image, то есть url, в файл, а не содержимое «позади» URL-адреса.
Но вместо строки вы можете передать ресурс потока в качестве параметра $ data в file_put_contents. Поэтому откройте поток через fopen/http-wrapper, проверьте результат и передайте его в file_put_contents.

$url = explode('\n', $urls); 
foreach($url as $count=>$image) { 
    $img = 'c://wamp/www/www.mysite.com/uploads/images/cat1/image'.$count.'.png'; 
    $fp = fopen($image, 'rb'); 
    if (!$fp) { 
     yourErrorHandler(); 
    } 
    else { 
     $result = file_put_contents($img, $fp); 
     // check $result here.... 
    } 
} 
+0

Спасибо, он сохранил только первое изображение, другие не созданы и появляются ошибки php. 'Предупреждение: fopen (' https: // urlimage'): не удалось открыть поток: Недопустимый аргумент в C: \ wamp \ www \ www.www.mysite.com \ site \ home.php в строке 60' и 'Fatal error : Вызов неопределенной функции yourErrorHandler() в C: \ wamp \ www \ www.mysite.com \ site \ home.php в строке 62' – Gislef

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