Загрузка картинки, с удалённого сервера

Статус
В этой теме нельзя размещать новые ответы.

Сергiй

Мой дом здесь!
Регистрация
19 Ноя 2006
Сообщения
356
Реакции
349
Народ, посоветуйте, каким способом закачать картинку с удалённого сервера, ссылки имеются Для просмотра ссылки Войди или Зарегистрируйся , только загрузить в конкретную папку
 
PHP:
<?php
// Массив с файлами
$files_array = array('http://www.server.com/picture_1.jpg',
                     'http://www.server.com/picture_2.jpg',
                     'http://www.server.com/picture_3.jpg',
                     'http://www.server.com/picture_4.jpg',
                     'http://www.server.com/picture_5.jpg',
                     'http://www.server.com/picture_6.jpg',
                     'http://www.server.com/picture_7.jpg',
                     'http://www.server.com/picture_8.jpg');

// Директория, куда копировать
$copy_dir = 'files/';

foreach($files_array as $link_to_file) {
    // Узнаем имя файла, отбрасывая путь к нему
    $filename = substr(strrchr($link_to_file, '/'), 1);
    // Пытаемся копировать в указанную директорию
    if(!@copy($link_to_file, $copy_dir . $filename)) {
        die('Не получилось');
    }
}
?>
 
PHP:
<?php
// Массив с файлами
$files_array = array('http://www.server.com/picture_1.jpg',
                     'http://www.server.com/picture_2.jpg',
                     'http://www.server.com/picture_3.jpg',
                     'http://www.server.com/picture_4.jpg',
                     'http://www.server.com/picture_5.jpg',
                     'http://www.server.com/picture_6.jpg',
                     'http://www.server.com/picture_7.jpg',
                     'http://www.server.com/picture_8.jpg');
// Директория, куда копировать
$copy_dir = 'files/';
foreach($files_array as $link_to_file) {
    // Узнаем имя файла, отбрасывая путь к нему
    $filename = substr(strrchr($link_to_file, '/'), 1);
    // Пытаемся копировать в указанную директорию
    if(!@copy($link_to_file, $copy_dir . $filename)) {
        die('Не получилось');
    }
}
?>
В этом случае, если картинка уже присутствует, скрипт пропускает или копирует её ? или поставить ещё одно условие?
PHP:
if (isset ($filename)){
echo "Картинка уже есть";
}    
 else {
    // Пытаемся копировать в указанную директорию
    if(!@copy($link_to_file, $copy_dir . $filename)) {
        die('Не получилось');
    }
 }
но тут не уверен, если проверять будет в папке, или както на это надо указать?
 
Пользуйтесь функцией file_exists:
PHP:
if(file_exists($file)) {
    // переименовываем файл.
}
 
  • Заблокирован
  • #6
Вот, добавил проверку файла на существование и вывод сообщения о результатах
PHP:
<?php
// Массив с файлами
$files_array = array('http://www.server.com/picture_1.jpg',
                     'http://www.server.com/picture_2.jpg',
                     'http://www.server.com/picture_3.jpg',
                     'http://www.server.com/picture_4.jpg',
                     'http://www.server.com/picture_5.jpg',
                     'http://www.server.com/picture_6.jpg',
                     'http://www.server.com/picture_7.jpg',
                     'http://www.server.com/picture_8.jpg');

// Директория, куда копировать
$copy_dir = 'files/';
$no_copy = array();
foreach($files_array as $link_to_file) {
    // Узнаем имя файла, отбрасывая путь к нему
	
    $filename = substr(strrchr($link_to_file, '/'), 1);
	// Если файл существует - добавляем к названию уникальный префикс
	if( file_exists($copy_dir . $filename) ) {
		$filename = time()."_".$filename;
	}
    // Пытаемся копировать в указанную директорию
    if(!@copy($link_to_file, $copy_dir . $filename)) {
       $no_copy[] = $link_to_file;
    }
}

if( count($no_copy) ) {
	echo "Не получилось скопировать ".count($no_copy)." файлов:<br />";
	foreach($no_copy as $no_copy_link) {
		echo $no_copy_link."<br />";
	}
} else {
	echo "Все файлы (".count($files_array).")были успешно скопированы!";
}
?>

Добавлено через 2 минуты
И ещё, парни, зачем при неудачном копировании сразу прерывать работу скрипта?
PHP:
if(!@copy($link_to_file, $copy_dir . $filename)) {
   die('Не получилось');
}
В моём варианте работа скрипты не прерывается, а просто по окончании выводится статус-сообщение с файлами, которые не удалось скопировать
 
Скажите а в случае загрузки больших файлов,можно ли както визуально отобразить ход загрузки файла на сервер?
 
Скажите а в случае загрузки больших файлов,можно ли както визуально отобразить ход загрузки файла на сервер?

Хочу расширить вопрос, если время выполнения скрипта большое, то как уведомить клиента о состоянии его запроса?
 
И ещё, парни, зачем при неудачном копировании сразу прерывать работу скрипта?
Да, че-то я затупил, уже не помню, почему именно так написал :)
Хочу расширить вопрос, если время выполнения скрипта большое, то как уведомить клиента о состоянии его запроса?
Можно подробнее, откуда и куда собираетесь копировать?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху