Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyświetlanie plików i obliczenie ich rozmiaru
Forum PHP.pl > Forum > Przedszkole
!*!
wyświetlanie plików z folderu:

  1. <?php
  2. $directory="files/";
  3. $dir=opendir($directory);
  4.  
  5. while($file_name=readdir($dir))
  6.    {
  7.  
  8.    if(($file_name!=".")&&($file_name!=".."))
  9.        {
  10.        $file_list.="$file_name <br />";
  11.        }
  12.    }
  13.  
  14. closedir($dir);
  15. echo ''.$file_list.' <br />';
  16. ?>


odczytanie objętości pliku [w bajtach]:

  1. <?php
  2. $ilezajmuje = filesize($nazwa);
  3. ?>


Jak mogę to połączyć aby każdy plik wyświetlał ile zajmuje i sumę wszytkich?
siemieng
  1. <?php
  2. $directory="files/";
  3. $dir=opendir($directory);
  4.  
  5. $files_tab = array(); //deklaracja tablicy przechowującej informacje o wszystkich plikach
  6. while($file_name=readdir($dir))
  7.   {
  8.  
  9.   if(($file_name!=".")&&($file_name!=".."))
  10.       {
  11.       $file_tab = array ($file_name, filesize($file_name)); //tablica z informacjami o jednym pliku [0] -> nazwa; [1] -> rozmiar
  12.       array_push($files_tab,  $file_tab); //dołączenie tablicy informacji o jednym pliku do tablicy wszystkich plików
  13.       }
  14.   }
  15.  
  16. closedir($dir);
  17.  
  18. $suma = 0;
  19. for ($i=0; $i<count($files_tab); $i++) {
  20.     echo 'nazwa'.$files_tab[$i][0].' '.'rozmiar'.$files_tab[$i][1].'<br/>';
  21.     $suma += $files_tab[$i][1];
  22. }  
  23. echo $suma;
  24. ?>


pisane z palca mogą być błędy - ale ogólnie użyj tablic
!*!
  1. <?php
  2. $dir=opendir($directory);
  3.  
  4. $files_tab = array(); //deklaracja tablicy przechowującej informacje o wszystkich plikach
  5. while($file_name=readdir($dir))
  6.  {
  7.  
  8.  if(($file_name!=".")&&($file_name!=".."))
  9.      {
  10.      $file_tab = array ($file_name, filesize($files_name)); //tablica z informacjami o jednym pliku [0] -> nazwa; [1] -> rozmiar
  11.      array_push($files_tab,  $file_tab); //dołączenie tablicy informacji o jednym pliku do tablicy wszystkich plików
  12.      }
  13.  }
  14.  
  15. closedir($dir);
  16.  
  17.  
  18. for ($i=0; $i<count($files_tab); $i++) {
  19.    echo 'nazwa '.$files_tab[$i][0].' '.'rozmiar'.$files_tab[$i][1].'<br/>';
  20.    $suma += $files_tab[$i][1];
  21. }  
  22. echo "$suma <br />";
  23. ?>


Jest jeden mały problem, suma jest równa 0 zawsze.
siemieng
  1. <?
  2. $directory="files/";
  3. $dir=opendir($directory);
  4.  
  5. $files_tab = array(); //deklaracja tablicy przechowującej informacje o wszystkich plikach
  6. while($file_name=readdir($dir))
  7.  {
  8.  
  9.  if(($file_name!=".")&&($file_name!=".."))
  10.      {
  11.      $file_path = $directory.$file_name; //pelna ścieżka do pliku
  12.      $file_tab = array ($file_name, filesize($file_path)); //tablica z informacjami o jednym pliku [0] -> nazwa; [1] -> rozmiar
  13.      array_push($files_tab,  $file_tab); //dołączenie tablicy informacji o jednym pliku do tablicy wszystkich plików
  14.      }
  15.  }
  16.  
  17. closedir($dir);
  18.  
  19. $suma = 0;
  20. for ($i=0; $i<count($files_tab); $i++) {
  21.    echo 'nazwa'.$files_tab[$i][0].' '.'rozmiar'.$files_tab[$i][1].'<br/>';
  22.    $suma += $files_tab[$i][1];
  23. }  
  24. echo $suma;
  25. ?>


sprawdzone działa
!*!
Może mi ktoś wskazać miejsce w którym robie błąd?

  1. <?php
  2. $maxfilekb = '524288'; //maksymalne miejsce na pliki w katalogu
  3. $odejmijmiejsce = ($maxfilekb-$suma); //ilśoć łaczna plików które już są, odejmowanie
  4. echo 'max miejsca na pliki: '.$maxfilekb.' <br> wszytkie pliki zajmują :'.$suma.' <br>
  5.  
  6. wolne miejsce: '.$odejmijmiejsce.'
  7.  
  8. ';
  9.  
  10. //wgrywanie pliku
  11.  
  12.  
  13. $rozmiar = '90000'; //maksymalny rozmiar pliku 90Kb
  14.  
  15. $pliczek = $_FILES['plik']['name'];
  16. $wielkoscpliku = $_FILES['plik']['size'];
  17.  
  18. $opliku = '<br>wielkość pliku: '.$wielkoscpliku.'<br>nazwa pliku: '.$pliczek.' ';
  19.  
  20. if (isset($_FILES['plik']['name'], $_FILES['plik']['type']))  
  21. {
  22.  
  23.  
  24. if ($wielkoscpliku >= $rozmiar){  //sprawdza czy plik nie jest za duży
  25.  
  26. $errorq=1;
  27. $echoerror = "ERROR 1 wielkość za duża";
  28.  
  29. }
  30.  
  31.  
  32. if ($wielkoscpliku >= $odejmijmiejsce){ //sprawdza czy jest jeszcze miejsce w katalogu
  33.  
  34. $errorq=1;
  35. $echoerror = "ERROR 2 Nie masz tyle miejsca aby wgrać plik.";
  36.  
  37. }
  38.  
  39. if ($odejmijmiejsce > $maxfilekb){ //sprawdza czy jest jeszcze miejsce w katalogu
  40.  
  41. $errorq=1;
  42. $echoerror = "ERROR 3 Nie masz już miejsca na wgranie tego pliku.";
  43.  
  44. }
  45.  
  46. if ($_FILES['plik']['type'] != 'image/gif' AND $_FILES['plik']['type'] != 'image/jpeg' AND $_FILES['plik']['type'] != 'image/jpg' AND $_FILES['plik']['type'] != 'image/png' AND $_FILES['plik']['type'] != 'image/pjpeg' AND $_FILES['plik']['type'] != 'image/x-png'')
  47.  
  48. {
  49.  
  50. $errorq=1;
  51. $echoerror = 'ERROR 4 Niewłaściwy format pliku;
  52.  
  53.  
  54. }
  55. ?>


Problem polega na tym iż coś robię źle, np. jeśli plik ma 1MB jest za duży to wywali błąd o tym iż pliik jest niewłaściwy...

ps. zapomianiełm o czymś jeśli chodzi o przestrzeń na pliki i sprawdzanie?
ps2. jak zamienić B na Kb?
lukaszgolder
Masz błąd tutaj:
  1. <?php
  2. if ($_FILES['plik']['type'] != 'image/gif' AND $_FILES['plik']['type'] != 'image/jpeg' AND $_FILES['plik']['type'] != 'image/jpg' AND $_FILES['plik']['type'] != 'image/png' AND $_FILES['plik']['type'] != 'image/pjpeg' AND $_FILES['plik']['type'] != 'image/x-png')
  3. ?>


W rozmiarze maksymalnym, co do 90 kB, to chyba 1kB = 1024 B, aby zamienić B na kB podziel poporstu przez 1024 i zaokrągli np za pomocą round" title="Zobacz w manualu PHP" target="_manual.
!*!
lukaszgolder - racja dzięki, zawsze zapominam o tym przeliczniku..., ale nadal nie wiem gdzie jest błąd, ten przecinek na końcu zrobiłem omyłkowo przy wklejaniu na forum aby zmniejszyć kod.
Szunaj85
Nawet ciekawy jest skrypt siemieng.
Co do tego skryptu ja mam 2 pytania.
Pięknie wyświetla pliki znajdujące się w folderach. A co zrobić żeby wyświetlił również pliki nie znajdujące się w żadnym folderze, tylko na samym wierzchu?
Jak widzę skrypt wyświetla rozmiar plików w bajtach. Co zrobić żeby wyświetlał rozmiar plików w kilobajtach?
erix
Cytat
A co zrobić żeby wyświetlił również pliki nie znajdujące się w żadnym folderze, tylko na samym wierzchu?

Trochę nie kumam?

Cytat
Jak widzę skrypt wyświetla rozmiar plików w bajtach. Co zrobić żeby wyświetlał rozmiar plików w kilobajtach?

To jest jednak głupie pytanie. Bo padła już na nie odpowiedź w tym wątku.
Szunaj85
Cytat
To jest jednak głupie pytanie. Bo padła już na nie odpowiedź w tym wątku.

Tyle to ja wiem nawet bez tego forum. I już sobie poradziłem.
Cytat
Trochę nie kumam?

Zademonstruję to za pomocą ścieżki do pliku.
Kolega siemieng napisał skrypt który wyświetla pliki znajdujące się np. w: files/pliki (pierwsza linijka kodu),
a mi chodzi o pliki znajdujące się w: pliki
erix
Czyli w podkatalogach? Zainteresuj się zagadnieniem rekurencyjności albo klasą SPL - RecursiveDirectoryIterator.
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.