PDA

View Full Version : سوال: نحوه بدست آوردن حجم فایل های یک پوشه



Master_Power
جمعه 10 فروردین 1397, 19:06 عصر
سلام اساتید

یه سوال دارم لطف کنید و پاسخ بدید
تشکر

من روی سیستم هر بار یکسری فایل zip توی یک پوشه میریزم و میخوام مقدار حجم اون فایل های توی پوشه را هربار با همدیگه بدست بیارم و کپی کنم به صورت زیر
22.4mb
45mb
2.1mb
78mb

فقط میخوام به همین صورت حجم فایل ها چاپ بشه و آخرشون هم mb بیاد

تمام فایل ها با فرمت Zip هستن و هر سری نام فایل ها فرق میکنه
بازم میگم فقط میخوام حجم فایل ها چاپ بشه ولی به ترتیبی که فایل ها توی پوشه هست

تشکر میکنم اگر کدشو بدید

Master_Power
دوشنبه 13 فروردین 1397, 09:28 صبح
UP . . . .

SlowCode
دوشنبه 13 فروردین 1397, 14:22 عصر
اینجور چیزا رو تو گوگل سرچ کنین خیلی زود به جواب میرسین.


<?php

function folderSize ($dir)

{

$size = 0;

foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $each) {

$size += is_file($each) ? filesize($each) : folderSize($each);

}

return $size;

}


function formatSizeUnits($bytes)

{

if ($bytes >= 1073741824)

$bytes = number_format($bytes / 1073741824, 2) . ' GB';

elseif ($bytes >= 1048576)

$bytes = number_format($bytes / 1048576, 2) . ' MB';

elseif ($bytes >= 1024)

$bytes = number_format($bytes / 1024, 2) . ' KB';

elseif ($bytes > 1)

$bytes = $bytes . ' bytes';

elseif ($bytes == 1)

$bytes = $bytes . ' byte';

else

$bytes = '0 bytes';
return $bytes;

}

echo formatSizeUnits(folderSize("folder_name"));

Master_Power
سه شنبه 14 فروردین 1397, 02:13 صبح
تشکر

ولی من هرکاری میکنم میزنه 0 byte

تغییر خاصی باید توی کد ها بدم ؟

فایل را هم توی پوشه و هم بیرون پوشه میزارم جواب نمیده

Master_Power
سه شنبه 14 فروردین 1397, 02:18 صبح
الان تست کردم فقط حجم پوشه را میده

من میخوام حجم فایل های داخل پوشه را بده
باید چیکار کنم ؟

Farshid007
پنج شنبه 16 فروردین 1397, 12:19 عصر
function get_filesize_folder($folder_path)
{
$files=array();
$dirs=scandir($folder_path);
foreach($dirs as $key=>$dir)
{
if($dir=="."||$dir==".."){ continue;}

$size=filesize($folder_path.'/'.$dir);
$files[$dir]=number_format(($size/1024)/1024,2);


}
return $files;

}



این تابع که نوشتم آدرس یک پوشه را میگیره و ارایه ای بر میگردونه که اندیسش اسم فایل هست و مقدارش سایز فایل با فرمت مگابایت


یک نمونه خودم تست کردم :


print_r(get_filesize_folder('tmp'));


برگردوند:


Array
(
[Bebegim [128].mp3] => 4.37
[Mohsen Ebrahimzadeh - Mishi Fadash (320) (Iromusic).mp3] => 7.19
[Soroush Hichkas Feat Reza Pishro Feat Dj Mavi - Bazam Kalan - DJ Mavi Club Mix (320) (Iromusic).mp3] => 9.21
)



فقط نکته اش اینجاست که اگه فولدر تو فولدر بشه اون ساب فولدرو نمیگیره :)