Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] wyświetlanie plików i obliczenie ich rozmiaru
!*!
post 4.11.2008, 00:12:25
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
siemieng
post 4.11.2008, 00:27:45
Post #2





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

Ostrzeżenie: (0%)
-----


  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

Ten post edytował siemieng 4.11.2008, 00:30:48
Go to the top of the page
+Quote Post
!*!
post 4.11.2008, 00:44:10
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


  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.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
siemieng
post 4.11.2008, 01:10:09
Post #4





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

Ostrzeżenie: (0%)
-----


  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

Ten post edytował siemieng 4.11.2008, 01:14:17
Go to the top of the page
+Quote Post
!*!
post 12.11.2008, 14:16:24
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
lukaszgolder
post 12.11.2008, 14:23:20
Post #6





Grupa: Zarejestrowani
Postów: 141
Pomógł: 17
Dołączył: 2.04.2008
Skąd: z Zabrza

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
!*!
post 12.11.2008, 17:04:23
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Szunaj85
post 21.11.2008, 19:27:16
Post #8





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

Ostrzeżenie: (0%)
-----


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?


--------------------
Jeśli Ci pomogłem wciśnij Jeśli mi pomożesz wcisnę
Go to the top of the page
+Quote Post
erix
post 21.11.2008, 19:30:38
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Szunaj85
post 21.11.2008, 19:40:04
Post #10





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował Szunaj85 21.11.2008, 19:45:18


--------------------
Jeśli Ci pomogłem wciśnij Jeśli mi pomożesz wcisnę
Go to the top of the page
+Quote Post
erix
post 21.11.2008, 22:07:34
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Czyli w podkatalogach? Zainteresuj się zagadnieniem rekurencyjności albo klasą SPL - RecursiveDirectoryIterator.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 12:28