Można posłużyć się funkcją remote_file_size() która zwróci
rozmiar pliku w bajtach. Funkcja nie zadziała na pliku
lokalnym jeśli nie podamy pełnego adresu URL.
<?php
function remote_file_size($fname) {
$url = parse_url($fname);
if($fp = @fsockopen($url['host'], 80)) {
fputs($fp, "HEAD ".$url['path']."?".$url['query']." ".
"HTTP/1.0\r\nHost: ".$url['host']."\r\n\r\n");
if(eregi("200 OK", fgets($fp, 1024)))
while(!feof($fp)) $head .= fgets($fp, 1024);
fclose($fp);
if(eregi("Content-Length: ([0-9]+)", $head, $match))
return $match[1];
}
if($fp = @fopen($fname, "rb")) {
$fsize = 0;
while($buf = fread($fp, 1024)) $fsize += strlen($buf);
fclose($fp);
return $fsize;
}
return false;
}
?>
Przykład wyświetlenia objętości tego artykułu:
echo remote_file_size("http://4programmers.net/view_faq.php?id=273");
Do napisania tej pozycji FAQ zainspirował mnie test PHP ze strony
http://www.kedziora.info/testy/?id=17