PHP – определение размера файла на удаленном сервере

Встала острая необходимость получить размер тысячи огромных файлов, которые лежали на удаленном сервере. Нужно было получить общее количество МБ всех файлов, для того, что бы понять, хватит ли места на сервере если выкачать все эти файлы. На php это реализовать достаточно просто и быстро. Получить размер удаленного файла можно из HTTP-заголовков.

<?
 function getRemoteFileSize($url){
   $parse = parse_url($url);
   $host = $parse['host'];
   $fp = @fsockopen ($host, 80, $errno, $errstr, 20);
   if(!$fp){
     $ret = 0;
   }else{
     $host = $parse['host'];
     fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
     fputs($fp, "HOST: ".$host."\r\n");
     fputs($fp, "Connection: close\r\n\r\n");
     $headers = "";
     while (!feof($fp)){
       $headers .= fgets ($fp, 128);
     }
     fclose ($fp);
     $headers = strtolower($headers);
     $array = preg_split("|[\s,]+|",$headers);
     $key = array_search('content-length:',$array);
     $ret = $array[$key+1];
   }
   if($array[1]==200) return $ret;
   else return -1*$array[1];
 } 

 $url = 'http://artkiev.com/blog/wp-content/uploads/2012/12/sreda.zip';
 $size = getRemoteFileSize($url);
 if($size==0) echo "Не могу соединиться";
 elseif($size<0) echo "Ошибка. Код ответа HTTP: ".(-1*$size);
 else echo "Размер удалённого файла (bytes): ".$size;
?>
Возврат % от покупок

Другие публикации:



Написать комментарий через:

 
               
  • Локальный блог
  •  
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

 
Статусы для соц.сетей на ArtKiev Design Studio