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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование удаленного файла на свой сервер 
:(
    Опции темы
Nasguler
Дата 3.11.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.11.2009

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



Доброго времени суток!

Просьба помочь если не делом то советом.
Стоит следующая задача:
Скопировать файл (к примеру) http://bl.rutube.ru/f909f802288b828b52794b1533b6f341.iflv себе на сайт.
Открыл на шаровом хостинге сайт phpinfo() здесь http://nasguler.freehostia.com/p/my.php

За два дня моего изучения РНР понял что реализовать это с помощью fopen(), file() и file_get_contents() не получается (хотя и не понял почему)
В CURL еще слабо вник, но то что прочел не вдохновило (можно читать только страницы)

Пробовал использовать 
Код

function urlGetContents($url, $timeout = 5)
{
   $url_parsed = parse_url($url);
   $host = $url_parsed["host"];

   if ($url == '' || $host == '') {
       return false;
   }
   $hostName = gethostbyname($host);
   $ip = ip2long($hostName);
   if ($ip === -1 || $ip === false) {
        return false;
   }
   $port = ($url_parsed["port"] == 0 ? 80 : $url_parsed["port"]);
   $path = (empty($url_parsed["path"]) ? '/' : $url_parsed["path"]);
   $path.= (!empty($url_parsed["query"]) ? '?'.$url_parsed["query"] : '');
   $out = "GET $path HTTP/1.0\r\nHost: $host\r\nConnection: Close\r\n\r\n";
   $fp = fsockopen($host, $port, $errno, $errstr, intval($timeout));
   if (!$fp) {
       return false;
   }
   stream_set_timeout($fp, intval($timeout));
   fwrite($fp, $out);

   $headers = '';
   $content = '';
   $buf = '';
   $isBody = false;
   while (!feof($fp)) {
        $buf = fgets($fp, 1024);
        if ($isBody) {
            $content .= $buf;
        } else {
            $headers .= $buf;
        }
        if ($buf == "\r\n" ) {
            $isBody = true;
        }
   }
   preg_match('#HTTP/1.[0-9]{1}\s+([0-9]{3}).*#is', $headers, $match);
   fclose($fp);
   if($match[1] != 200) {
       return false;
   }
   return array('headers'=>$headers,'body'=>$content);
}

$urlAddress = 'http://bl.rutube.ru/f909f802288b828b52794b1533b6f341.iflv';
if (($html = urlGetContents($urlAddress)) === false) {
    print "Адрес <b>".$urlAddress."</b> в данный момент недоступен";
} else {
    print $html['body'];
}

неполучается

Код
function urlGetContents(& $cUrl, $url, $port = 80, $timeout = 5, $errCount = 1)
{
    curl_setopt($cUrl, CURLOPT_URL, $url);
    curl_setopt($cUrl, CURLOPT_PORT, $port);
    curl_setopt($cUrl,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($cUrl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)");
    curl_setopt($cUrl, CURLOPT_TIMEOUT, $timeout);
    $content = curl_exec($cUrl);
    if (curl_getinfo($cUrl,CURLINFO_HTTP_CODE) != 200) {
        return (($errCount < 2) ? urlGetContents($cUrl, $url, $port, $timeout, ++$errCount) : false);
    } else {
        return $content;
    }
}

$cUrl = curl_init();
$urlAddress = 'http://bl.rutube.ru/f909f802288b828b52794b1533b6f341.iflv';
if (($html = urlGetContents($cUrl, $urlAddress)) === false) {
    print "Адрес <b>".$urlAddress."</b> в данный момент недоступен";
} else {
    print $html;
}
curl_close($cUrl);

тоже не помогло.

Буду благодарен если ткнете носом что делаю не так или подскажете как нада делать, просить об готовом коде постисняюсь, но если кого то не затруднит из альтруисских побуждений сделать то не откажусь.



Это сообщение отредактировал(а) Nasguler - 3.11.2009, 22:00
PM MAIL   Вверх
Ипатьев
Дата 3.11.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Nasguler @  3.11.2009,  21:55 Найти цитируемый пост)
Буду благодарен если ткнете носом что делаю не так

Открыл на шаровом хостинге сайт
PM MAIL   Вверх
Nigel
Дата 4.11.2009, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

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



Вообще задача решается 1 строчкой file_get_contents, но т.к. шаровый хостинг, то нужные вам функции могут быть заблокированы.
PM MAIL   Вверх
Nasguler
Дата 4.11.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.11.2009

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



Спасибо за ответы.

Может тогда кто нибудь порекомендует недорогой хостинг где будет работать прмиерно следующее:
Код
$buff = file_get_contents('http://bl.rutube.ru/f909f802288b828b52794b1533b6f341.iflv');
file_put_contents('myfile.tmp', $buff);
Сразу оговорюсь, что проект некомерческий, даже личный, для обхода некоторых органичений.

PM MAIL   Вверх
Pitlord
Дата 5.11.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 31.10.2009

Репутация: 1
Всего: 7



file_get_contents() для таких целей не стоит использовать (в особенности если удалённый документ имеет приличный размер), лучше cURL:
Код

<?php
function curl_get_remote_doc( $url, $local_filename )
{
    if( ! ($fh = fopen($local_filename, 'wb')) )
        return false;

    $ch = curl_init( $url );
    curl_setopt( $ch, CURLOPT_NOPROGRESS, 0 );
    curl_setopt( $ch, CURLOPT_FILE, $fh );

    curl_exec( $ch );
    fclose( $fh );

    return true;
}

curl_get_remote_doc('http://bl.rutube.ru/f909f802288b828b52794b1533b6f341.iflv', 'myfile.tmp');
?>

Но, конечно, вряд ли это решит Вашу проблему в данном случае.
PM MAIL   Вверх
user665
Дата 8.12.2009, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.12.2009

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



здесь найдете все что нужно:
Скрипт переноса файлов напрямую с сайта на сайт
http://www.bizlife.us/2006/07/14/perenos_f...a_na_sajjt.html

PM MAIL   Вверх
nerezus
Дата 4.1.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 2
Всего: 43





--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




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


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

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