Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wielkość pliku
Forum PHP.pl > Forum > Przedszkole
xeros
Witam,
Mam na serwerze np. jakis_plik.zip i chcialbym np sprawdzic ile ten plik zajmuje miejsca np. w mb?

Jest jakas komenda ktora mi to sprawdzi ?
rzymek01
http://php.net

lub google.pl winksmiley.jpg
xeros
znalazlem: filesize

ale jak stosuje kod:
  1. <?php
  2. $wielkosc = $rekord['nazwa_pliku'];
  3. echo filesize($wielkosc) . ' bajtów';
  4. ?>


Część wielkości plików wyświetla się prawidłowo a przy niektórych jest błąd:
Warning: filesize() [function.filesize]: stat failed for images.jpeg in ...

czy to od czegoś zależy questionmark.gif
Siner
filesize" title="Zobacz w manualu PHP" target="_manual i zobacz tam pierwszy komentarz.
xeros
można to jakoś obejść ?
Shili
http://pl.php.net/manual/pl/function.stat.php
Spróbuj może tego, co prawda nie jest to jakoś szczególnie poprawne, ale możesz się posiłkować funkcją is_writable, w przypadku true użyjesz filesize, w przypadku false stat. Może zadziała.
Adamo_0
Witam
Pozwoliłem sobie napisać kod wyświetlający rozmiar pliku :
  1. <?php
  2. /* Nazwa pliku z którego chcemy pobrać rozmiar np:. nazwa.txt */
  3. $filename = 'nazwa.txt';
  4.  
  5. /* Przypisania funkcji użytych w programie*/
  6. $size = filesize($filename);
  7. $size_mb = ($size/1024)/1024;
  8. $round = round($size_mb,2);
  9. $format = number_format($size, 2, ',', ',');
  10.  
  11.  
  12. /* Wyświetla rozmiar pliku w bajtach */
  13. echo $filename . ': ' . $size . ' bajtów';
  14. echo "<br>";
  15.  
  16. /* Wyświetle rozmiar pliku w bajtach zwracając sformatowaną liczbę */
  17. echo $filename . ': ' . $format . ' bajtów';
  18. echo "<br>";
  19.  
  20. /* Wyświetla rozmier pliku w megabajtach */
  21. echo $filename . ': ' . $size_mb . ' megabajtów';
  22. echo "<br>";
  23.  
  24.  
  25. /* Wyświetla liczbe w megabajtach zaokrągloną do 2 miejsc po przecinku */
  26. echo $filename . ': ' . $round . ' megabajty';
  27. echo "<br>";
  28. ?>


Powyższy kod powinien zwrócić coś podobnego to tego:
Kod
nazwa.txt: 2458072 bajtów
nazwa.txt: 2,458,072,00 bajtów
nazwa.txt: 2.3442001342773 megabajtów
nazwa.txt: 2.34 megabajty

Mam nadzieje że kiedy komuś się on przyda Rkingsmiley.png
xeros
Adamo_0 thx za kod ale i tam mam te same błędy które były wcześniej... wina chyba leży po stronie php 5
Siner
W php zawsze moższ skorzytsać z class.directoryiterator" title="Zobacz w manualu PHP" target="_manual i funkcji getSize. Na google znajdziesz trochę informacji jak to zastosować.
kacpereczek
Co trzeba zrobić, aby dane kilku plików były wyświetlane na jednej stronie za pomocą ostatniego przykładu?

  1. <?php
  2. /* Nazwa pliku z którego chcemy pobrać rozmiar np:. nazwa.txt */
  3. $filename = 'nazwa.txt';
  4.  
  5. /* Przypisania funkcji użytych w programie*/
  6. $size = filesize($filename);
  7. $size_mb = ($size/1024)/1024;
  8. $round = round($size_mb,2);
  9. $format = number_format($size, 2, ',', ',');
  10.  
  11. /* Wyświetla liczbe w megabajtach zaokrągloną do 2 miejsc po przecinku */
  12. echo $filename . ': ' . $round . ' megabajty';
  13. echo "<br>";
  14. ?>


Bardzo proszę o pomoc bo potrzebuję tego skryptu...
Pozdrawiam
decha-design
zrobić to w pętli dla kilku plików?

pliki możesz dać do tablicy ...
  1. <?php
  2. $files = array('nazwa.txt', 'nazwa2.txt')
  3. ?>
i zrobić następnie pętle:

  1. <?php
  2. foreach($files as $file) {
  3.  
  4. $size = filesize($file);
  5. $size_mb = ($size/1024)/1024;
  6. $round = round($size_mb,2);
  7. $format = number_format($size, 2, ',', ',');
  8.  
  9. /* Wyświetla liczbe w megabajtach zaokrągloną do 2 miejsc po przecinku */
  10. echo $filename . ': ' . $round . ' megabajty';
  11. echo "<br>";
  12.  
  13. }
  14. ?>


Mozliwe ze są błedy, ale raczej powinno dzialać ...
kacpereczek
Zrobiłem wszystko tak:

  1. <?
  2. $files = array('../gallery/comments/01.txt', '../gallery/comments/02.txt','../gallery/comments/03.txt', '../gallery/comments/04.txt', '../gallery/comments/05.txt', '../gallery/comments/06.txt', '../guestbook/data.txt');
  3.  
  4. foreach ($files as $file) 
  5. {  
  6. $size = filesize($file);
  7. $size_mb = ($size/1024)/1024;
  8. $round = round($size_mb,2);
  9. $format = number_format($size, 2, ',', ',');
  10. echo $filename . ': ' . $round . ' megabajty';
  11. echo "<br>";
  12. }
  13. ?>


I wyświetla mi się tylko to:

Cytat
: 0 megabajty
: 0 megabajty
: 0 megabajty
: 0 megabajty
: 0 megabajty
: 0 megabajty
: 0 megabajty


Proszę o pomoc...
szopen
Po zerowe -- skonfiguruj PHP tak jak trzeba (E_ALL | E_STRICT itd.) pozwoli wyjaśnić wiele błędów...

Po pierwsze zamiast $filename daj $file.

A czy te pliki są na tyle duże, aby mieściły się w przyjętej przez Ciebie dokładności w round($size_mb,2);? 
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.