Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как узнать размер файла на удалённом сервере

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Ограничение if else на авто загрузки фала
D0Gmatist
Отправлено: 17 Декабря, 2013 - 02:01:52
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Помогите примером...
как можно узнать размер файла имея полный адрес на файл

и если размер файла больше чем заданно то отмена скачивания...

Заранее спасибо.
 
 Top
IllusionMH
Отправлено: 17 Декабря, 2013 - 02:06:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




D0Gmatist, попробуйте черз cURL глянуть заголовок Content-length.
 
 Top
D0Gmatist
Отправлено: 17 Декабря, 2013 - 02:17:29
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




IllusionMH, Я как раз через cURL и получаю ссылку на файл )))


PHP:
скопировать код в буфер обмена
  1.  
  2. //много применений поэтому в функция
  3. function curlFunction($urlone) {
  4.  
  5.     $ch = curl_init($urlone);
  6.     curl_setopt($ch, CURLOPT_URL, $urlone);
  7.     curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'] . '/cookie.txt');
  8.     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36");
  9.     curl_setopt($ch, CURLOPT_REFERER, $urlone);
  10.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
  11.     curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  12.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  13.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  14.     $urlone = curl_exec($ch);
  15.  
  16.         return ($urlone);
  17.  
  18. }
  19.  
  20.                         $foolurl = "домен";
  21.                         $url = "домен+адрес поста";
  22.  
  23.                         $ch = curl_init($foolurl);
  24.                         curl_setopt($ch, CURLOPT_URL, $foolurl);
  25.                         curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'] . '/cookie.txt');
  26.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  27.                         curl_exec($ch);
  28.  
  29.                         $urlvideo = curlFunction($urlvideo);
  30.  
  31.  



после чего вытягиваю страницу и из неё

PHP:
скопировать код в буфер обмена
  1. $videosum = preg_match_all('#trailer.*?/.*.mp4)".*?class="continue">Среднее#iSu',$video, $videourl);
  2.  
  3.  
  4. $video = "полный адрес на файл";
  5.  


а вот как проверить размер теперь ...

(Отредактировано автором: 17 Декабря, 2013 - 02:26:22)

 
 Top
DelphinPRO
Отправлено: 17 Декабря, 2013 - 02:36:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




вам же сказали, попробуйте запросить файл, и прочитать заголовки отданные удаленным сервером. Конкретно заголовок Content-length.

Чтобы получить заголовки в результате запроса нужно включить опцию CURLOPT_HEADER.
Чтобы не загружать файл, попробуйте опцию CURLOPT_NOBODY (но тут я не уверен)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
D0Gmatist
Отправлено: 17 Декабря, 2013 - 02:43:23
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. function remote_filesize($urlSize) {
  2.  
  3.     $ch = curl_init($urlSize);
  4.     curl_setopt($ch, CURLOPT_HEADER, 1);
  5.     curl_setopt($ch, CURLOPT_NOBODY, 1);
  6.     $ok = curl_exec($ch);
  7.     curl_close($ch);
  8.     $head = ob_get_contents();
  9.     ob_end_clean();
  10.     $regex = '/Content-Length:\s([0-9].+?)\s/';
  11.     $count = preg_match($regex, $head, $matches);
  12.     return isset($matches[1]) ? $matches[1] : "unknown";
  13. }


так будет правильно?
 
 Top
armancho7777777 Супермодератор
Отправлено: 17 Декабря, 2013 - 04:29:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1. $headers = get_headers('http://google.ru', 1);
  2.  
  3. if(array_key_exists('Content-Length', $headers))
  4. echo $headers['Content-Length'];
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB