взимане на големина

aquafresh каза:
Как мога да изкарам големината/размера на даден файл ?
За папка:
<?php
function preobr($var) {
$i=0;
while (floor($var) > 0) {
$var = $var / 1024;
$i++;
}
$var = $var * 1024;
if ($i == 1 || $var == 0) { $type = "B"; }
if ($i == 2) { $type = "KB"; }
if ($i == 3) { $type = "MB"; }
if ($i == 4) { $type = "GB"; }
if ($i == 5) { $type = "TB"; }
$var = round($var,2);
return $var." ".$type;
}

function getsize($var) {
if (is_dir($var)) {
$files = array_diff(scandir($var),array('.','..'));
$size = 0;
$dir = preg_replace("/([\/])+/", "\\1", $var."/");
foreach ($files as $value) {
$size += filesize($dir.$value);
}
return preobr($size);
} elseif (is_file($var)) {
return preobr(filesize($var));
} else {
return preobr(0);
}
}

echo getsize("folder");
?>

потърси в търсачката , ако се не лъжа имаше около 5-т теми...
 
$file="някакъв файл";

$filesize = filesize($file);
$fp = fopen ($file ,"r");
$text=fread($fp,$filesize);
fclose($fp);

$txt = explode("\n",$text); // това го правиш ако файла има редове може да го промениш

$kolko = count($txt);//брой редове
http://bg2.php.net/filesize - виж тук...
 
Ето ти една функция ,която определя големината на един файл:
function razmer($str) {
$size = filesize($str);
$i=0;
$iec = array("K", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
while (($size/1024)>1) {
$size=$size/1024;
$i++;
}
return substr($size,0,strpos($size,'.')+3)." ".$iec[$i];
}
Така, после правиш един цикъл за прочитане на файловете в директория.
Да кажем, че папката ти е:
E:\mp3\new_music
Сега прочитаме папката и съдържанието (тоест файловете в нея) ги записваме в един масив:
$directory = "E:\mp3\new_music\";
ПОлзваме следния код за запис в масив:
Код:
while ($files = readdir($directory))
{
if (@!is_dir($files) && @!is_link($files) && $files !=".." && $files !="."){
$file_array[] = $files;
}
}
И сега прилагаме функцията за определяне на размер на файла ЗА ВСЕКИ ФАЙЛА от директорията, тоест от масив:
foreach($file_array as $current)
{
echo $current."-".razmer($current)."<br />";
}
 
Ето ти го направо целия код :)

Код:
<?php
function preobr($var) {
$i=0;
while (floor($var) > 0) {
$var = $var / 1024;
$i++;
}
$var = $var * 1024;
if ($i == 1 || $var == 0) { $type = "B"; }
if ($i == 2) { $type = "KB"; }
if ($i == 3) { $type = "MB"; }
if ($i == 4) { $type = "GB"; }
if ($i == 5) { $type = "TB"; }
$var = round($var,2);
return $var." ".$type;
}

function getsize($var) {
if (is_dir($var)) {
$files = array_diff(scandir($var),array('.','..'));
$size = 0;
$dir = preg_replace("/([\/])+/", "\\1", $var."/");
foreach ($files as $value) {
$size += filesize($dir.$value);
}
return preobr($size);
} elseif (is_file($var)) {
return preobr(filesize($var));
} else {
return preobr(0);
}
}


$dir = "images"; // тук въвеждаш папката
$dir = preg_replace("/([\/])+/", "\\1", $dir."/");
$dirr = opendir($dir);
while ($files = readdir($dirr))
{
if (!is_dir($files) && $files != ".." && $files != "."){
echo $files.' - '.getsize($dir.$files).'<br />';
}
}

closedir($dirr);
?>
 

Back
Горе