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]   

> Без описания
fullzero
Отправлено: 27 Апреля, 2011 - 15:06:52
Post Id



Гость


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


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




Вот скрипт, ищет нужные мне файлы по маске, выводит ссылку на файл и размер файла. Проблема в том что размер не в мегабайтах)

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. foreach (glob("1/*.mp3") as $filename)
  4. {
  5.     echo "<a href=\"$filename\">$filename<a> размер " . filesize($filename) . "\n<br>";
  6. }
  7.  
  8. ?>
  9.  



Нашёл по этой ссылке http://ua2.php.net/manual/en/fun...lesize.php#92418
такой код:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. /**
  4.   * Converts human readable file size (e.g. 10 MB, 200.20 GB) into bytes.
  5.   *
  6.   * @param string $str
  7.   * @return int the result is in bytes
  8.   * @author Svetoslav Marinov
  9.   * @author http://slavi.biz
  10.   */
  11. function filesize2bytes($str) {
  12.      $bytes = 0;
  13.  
  14.      $bytes_array = array(
  15.          'B' => 1,
  16.          'KB' => 1024,
  17.          'MB' => 1024 * 1024,
  18.          'GB' => 1024 * 1024 * 1024,
  19.          'TB' => 1024 * 1024 * 1024 * 1024,
  20.          'PB' => 1024 * 1024 * 1024 * 1024 * 1024,
  21.      );
  22.  
  23.      $bytes = floatval($str);
  24.  
  25.      if (preg_match('#([KMGTP]?B)$#si', $str, $matches) && !empty($bytes_array[$matches[1]])) {
  26.          $bytes *= $bytes_array[$matches[1]];
  27.      }
  28.  
  29.      $bytes = intval(round($bytes, 2));
  30.  
  31.      return $bytes;
  32.  }
  33. ?>
  34. nak5ive at DONT-SPAM-ME dot gmail dot com 11-Jun-2009 05:59
  35.  a quick way to convert bytes to a more readable format can be done using this function:
  36.  
  37. <?PHP
  38. function formatBytes($bytes, $precision = 2) {
  39.      $units = array('B', 'KB', 'MB', 'GB', 'TB');
  40.    
  41.      $bytes = max($bytes, 0);
  42.      $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
  43.      $pow = min($pow, count($units) - 1);
  44.    
  45.      $bytes /= pow(1024, $pow);
  46.    
  47.      return round($bytes, $precision) . ' ' . $units[$pow];
  48.  }
  49. ?>
  50.  


Но! Не могу понять как его связать с тем что у меня уже есть. Есть какие нибудь соображения?

P.S. ещё учусь . . . Закатив глазки
 
 Top
OrmaJever
Отправлено: 27 Апреля, 2011 - 15:23:43
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. foreach (glob("1/*.mp3") as $filename)
  3. {
  4.     echo "<a href=\"$filename\">$filename<a> размер " . (filesize($filename) / 1024 / 1024). " МБ\n<br>";
  5. }
  6.  
  7. ?>


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Uchkuma
Отправлено: 27 Апреля, 2011 - 15:24:46
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




 
 Top
fullzero
Отправлено: 28 Апреля, 2011 - 05:49:36
Post Id



Гость


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


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




OrmaJever пишет:
<?PHP
foreach (glob("1/*.mp3") as $filename)
{
echo "<a href=\"$filename\">$filename<a> размер " . (filesize($filename) / 1024 / 1024). " МБ\n<br>";
}

?>


То что надо. Только теперь как убрать конечные числа. 5,800 МБ Этого было бы достаточно. Выводит 5.80090332031 МБ. Последние 8 цыфр надо убрать
 
 Top
Uchkuma
Отправлено: 28 Апреля, 2011 - 08:27:31
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




fullzero, вы не заметили предыдущее сообщение?
 
 Top
fullzero
Отправлено: 28 Апреля, 2011 - 08:34:45
Post Id



Гость


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


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




OrmaJever Uchkuma спасибо Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo '<table width=\"100%\" height="100%" border=\"1\" cellspacing=\"2\" cellpadding=\"2\"><tr>';
  4. foreach (glob("1/*.mp3") as $filename)
  5. {
  6. echo "<td><a href=\"$filename\">$filename<a> размер " . sprintf('%01.2f', @filesize($filename) / 1048576 ). " мб</td>\n";
  7. }
  8. echo '</tr></table>';
  9. ?>
  10.  
  11.  

(Добавление)
В таблице лучше выглядит Улыбка

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file_arr = glob("1/*.mp3");
  3. echo '<table width="100%" border="1">';
  4. foreach ($file_arr as $file)
  5. {
  6. echo '<tr><td width="50%">'.$file.'</td><td width="50%">размер ' . sprintf('%01.2f', @filesize($file) / 1048576 ). 'мб</td></tr>';
  7. }
  8. echo '</table>';
  9. ?>
  10.  
 
 Top
OrmaJever
Отправлено: 28 Апреля, 2011 - 10:30:49
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




ну round() мне кажется для этих целей лутше подходит

PHP:
скопировать код в буфер обмена
  1. echo '<tr><td width="50%">'.$file.'</td><td width="50%">размер ' . round(@filesize($file) / 1048576, 3). ' МБ</td></tr>';

(Отредактировано автором: 28 Апреля, 2011 - 10:31:10)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
fullzero
Отправлено: 28 Апреля, 2011 - 11:41:34
Post Id



Гость


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


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




OrmaJever ага так даже лучше, три знака после запятой Улыбка

(Отредактировано автором: 14 Июля, 2011 - 12:46:50)

 
 Top
Uchkuma
Отправлено: 28 Апреля, 2011 - 11:53:05
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Количество знаков после запятой вы можете установить произвольное как в первом, так и во втором случае.
 
 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