Копирование файла по ссылке, с дальнейшим размещением на сервере

Небольшой метод позволяющий скопировать файл по ссылке и разместить его в корневую папку на сервере в файл temp.xml

Копирование осуществляем без библиотеки CURL, просто используем обычный функционал php.

	public static function copyFile($url)
	{
		$file	=	file_get_contents($url);
		$path	=	$_SERVER['DOCUMENT_ROOT'] . '/temp.xml';	
		if (!file_put_contents($path, $file)) {
			return false;
		}else{
			return true;
		}
	}

Теперь давайте воспользуемся библиотекой CURL, нет ничего сложного. Попробуем скачать логотип нашей студии и положить его куда-нибудь на сервер

  1. Сначала инициализируем CURL
  2. Открываем файл для записи
  3. Настраиваем CURL
  4. Выполняем CURL запрос
  5. Закрываем CURL
  6. Закрываем файл
$url = 'http://webpagestudio.net/logo.png';

	public static function copyFile($url)
	{
$cInit = curl_init($url); //1
$fileDownload = fopen($_SERVER['DOCUMENT_ROOT'] . '/images/logo.png', 'wb'); //2
curl_setopt($cInit , CURLOPT_FILE, $fileDownload );//3
curl_setopt($cInit , CURLOPT_HEADER, 0);//3
curl_exec($cInit );//4
curl_close($cInit );//5
fclose($fileDownload );//6
     }

Теперь можем обернуть все в класс и добавим в него парочку методов и 2 свойства

/**
 * Получаем файл по ссылке и кладем его в папку
 * Class Download
 */
class Download
{
	
	public $url;
	public $path;
	
	public function __construct($url, $path) {
		$this->url	= $url;
		$this->path	= $path;
	}
	
	public function copyFile() {
		$file	=	file_get_contents($this->url);
		if (!file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$this->path, $file)) {
			return false;
		}else{
			return true;
		}
	}
	
	public function copyFileCurl() {
		$cInit = curl_init($this->url);
		$fileDownload = fopen($_SERVER['DOCUMENT_ROOT'].'/'.$this->path, 'wb');
		curl_setopt($cInit , CURLOPT_FILE, $fileDownload );
		curl_setopt($cInit , CURLOPT_HEADER, 0);
		curl_exec($cInit);
		curl_close($cInit);
		fclose($fileDownload);	
		return true;		
     }
}

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

$download = new Download('http://webpagestudio.net/logo.png', 'logo-temp.png');

Дальше обращаемся к одному из методов(без использование CURL и с участием данной библиотеке). В данном примере выбран метод без участия CURL

if($download->copyFile()===true){
	echo 'файл загружен';
}else{
	echo 'файл НЕ загружен';
}