Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pomier wielkości pliku
Forum PHP.pl > Forum > Przedszkole
lukasamd
Witam,
w moim serwisie mam spory download, zawsze podawało się wartość rozmiaru pliku ręcznie w formie stringu np. "30,1 MB", "124,56 KB", "23.155MB"
Jak widać, każdy mógł wpisać co chciał, w efekcie zero standaryzacji a i operować na tym się nie da (np. ile jest sumarycznie rozmiaru?).

Postanowiłem więc temu zaradzić, przejechałem wszystkie pliki pętlą w której zamiast tego stringu wrzuciłem wynik z filesize, czyli rozmiar w bitach.
Następnie napisałem sobie funkcję do wyświetlania rozmiaru:

  1. function getFileSize($filesize)
  2. {
  3. $filesize = (int) $filesize;
  4. $type = '';
  5. for($multiple = 1; ;$multiple++)
  6. {
  7. if($filesize < pow(1024, $multiple))
  8. {
  9. break;
  10. }
  11. }
  12.  
  13. $filesize = number_format($filesize / pow(1024, $multiple - 1), 1);
  14. if ($multiple == 1) $type = ' B';
  15. elseif ($multiple == 2) $type = ' KB';
  16. elseif ($multiple == 3) $type = ' MB';
  17.  
  18. return $filesize . $type;
  19. }



Akurat taka, że na moje potrzeby wystarcza.
No ale jak zwykle mam takie przerzucie... czy ja nie wynajduję czasem na nowo koła?
tehaha
jeżeli spełnia Twoje potrzeby to jest dobra, jeżeli jesteś zainteresowany to sobie możesz porównać z innymi sposobami osiągania tej funkcjonalności http://algorytmy.pl/doc/php/function.filesize.php
zend
A tym zamienisz niefajnego int'a na przjazne dla użytkownika jednostki
  1. function filesize2bytes($str) {
  2. $bytes = 0;
  3.  
  4. $bytes_array = array(
  5. 'B' => 1,
  6. 'KB' => 1024,
  7. 'MB' => 1024 * 1024,
  8. 'GB' => 1024 * 1024 * 1024,
  9. 'TB' => 1024 * 1024 * 1024 * 1024,
  10. 'PB' => 1024 * 1024 * 1024 * 1024 * 1024,
  11. );
  12.  
  13. $bytes = floatval($str);
  14.  
  15. if (preg_match('#([KMGTP]?B)$#si', $str, $matches) && !empty($bytes_array[$matches[1]])) {
  16. $bytes *= $bytes_array[$matches[1]];
  17. }
  18.  
  19. $bytes = intval(round($bytes, 2));
  20.  
  21. return $bytes;
  22. }
wookieb
Zachęcam do zapoznania się z
http://forum.php.pl/index.php?showtopic=13...mp;#entry685885
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.