- <?php
- //$_POST['file_link'] = "ссылка на файл";
- //$_POST['file_name'] = "имя под которым файл буде сохранен";
- //$_POST['directory'] = "где сохранить файл"
- //Допустим есть файл:
- $remote_file = $_POST['file_link'];
- /*И условный идентификатор, чтобы не сохранять файл под своим именем, что в случае одинаковых имён удалённых файлов может привести к накладкам*/
- $rand = rand (100, 999);
- $id = "id".$rand."_".$_POST['file_name']."";
- //Получаем его расширение:
- $ext=substr ($remote_file, strrpos ($remote_file, "."));
- //Если оно подходит для конкретного случая:
- if ( in_array ( $ext, array (".zip", ".rar", ".apk", ".7z") ) )
- {
- //Инициализируем CURL-сессию
- $ch=curl_init ();
- //Устанавливаем для работы нужный файл
- curl_setopt ($ch, CURLOPT_URL, $remote_file);
- //Открываем "поток" для сохранения файла на Вашем сервере:
- $fp=fopen ("".$_POST['directory'].$id.$ext, "w+");
- //Указываем на него ссылку:
- curl_setopt ($ch, CURLOPT_FILE, $fp);
- //Нагло подделываем REFERER:
- curl_setopt ($ch, CURLOPT_REFERER, $remote_file);
- //Нагло подделываем USERAGENT:
- curl_setopt ($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.289 Version/12.02");
- //Устанавливаем опцию хождения по всем редиректам
- curl_setopt ($ch, CURLOPT_AUTOREFERER, 1);
- //Выполняем CURL-процедуру с заданными параметрами:
- curl_exec ($ch);
- //Закрываем сеанс CURL:
- curl_close ($ch);
- //Закрываем файл:
- fclose ($fp);
- // Проверяем существует ли файл
- $file = "".SITE_DIRECTORY."".$id.$ext."";
- if($f = @fopen($file, "rb")){
- print "<b>Файл '".$id.$ext."' загружен!</b>";
- fclose($f);
- } else { print "Файл не загружен!";}
- unset($file); //Разрушаем переменную.
- unset($f); //Разрушаем переменную.
- unset($_POST); //Разрушаем переменную.
- }
- ?>