Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php]Filesize, Błąd przy porównywaniu rozmiarów
felixk
post 25.12.2009, 12:57:20
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Witam, kolejny problem z formularzem (ale już chyba ostatni). Chce zrobić porównanie wielkości pliku i w zależności albo komunikat albo plik zostaje na serwerze. Oto co napisałem do tej pory:

  1.  
  2. $max = 512000;
  3. $rozmiar = filesize("$upload_dir$file_name"); //linijka nr 60
  4. echo $rozmiar;
  5. if ($rozmiar > $max)
  6. {
  7. echo "Plik za duży";
  8. }
  9.  

Dodam, że plik się nie ładuje.

a oto treść błędu, który występuje:

Warning: filesize() [function.filesize]: stat failed for upload_files/splyw_08.2009_074.jpg in /home/c/h/o/chojnowski/www/test/index.php on line 60


  1.  
  2. <?php
  3.  
  4. $site_name = $_SERVER['HTTP_HOST'];
  5. $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
  6. $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
  7.  
  8. $upload_dir = "upload_files/";
  9. $upload_url = $url_dir."/upload_files/";
  10. $message ="";
  11. $allow = array("jpg", "jpeg", "gif", "png", "bmp");
  12.  
  13. //create upload_files directory if not exist
  14. //If it does not work, create on your own and change permission.
  15. if (!is_dir("upload_files")) {
  16. die ("Folder nie istnieje");
  17. }
  18.  
  19. if ($_FILES['userfile']) {
  20. $message = do_upload($upload_dir, $upload_url);
  21. }
  22.  
  23. print $message;
  24.  
  25.  
  26.  
  27. function do_upload($upload_dir, $upload_url) {
  28. global $allow;
  29.  
  30. $temp_name = $_FILES['userfile']['tmp_name'];
  31. $file_name = $_FILES['userfile']['name'];
  32.  
  33. $rozszerzenie_pliku = substr( $file_name, strrpos( $file_name, '.' ) +1 );
  34.  
  35. $file_name = strtolower($file_name);
  36. $file_name = str_replace("ż","z",$file_name);
  37. $file_name = str_replace("ą","a",$file_name);
  38. $file_name = str_replace("Ľ","z",$file_name);
  39. $file_name = str_replace("ę","e",$file_name);
  40. $file_name = str_replace("ł","l",$file_name);
  41. $file_name = str_replace("Ł","l",$file_name);
  42. $file_name = str_replace("ś","s",$file_name);
  43. $file_name = str_replace("ń","n",$file_name);
  44. $file_name = str_replace("ć","c",$file_name);
  45. $file_name = str_replace("ó","o",$file_name);
  46. $file_name = str_replace(" ", "_",$file_name);
  47.  
  48. $file_type = $_FILES['userfile']['type'];
  49. $file_size = $_FILES['userfile']['size'];
  50. $result = $_FILES['userfile']['error'];
  51. $file_url = $upload_url.$file_name;
  52. $file_path = $upload_dir.$file_name;
  53.  
  54. //File Name Check
  55. if ( $file_name =="") {
  56. echo "<script language=\"javascript\">alert('Brak nazwy pliku.')</script>";
  57. }
  58.  
  59. // File Size check
  60. $max = 512000;
  61. $rozmiar = filesize("$upload_dir$file_name");
  62. echo $rozmiar;
  63. if ($rozmiar > $max)
  64. {
  65. echo "Plik za duży";
  66. }
  67.  
  68. //File Type Check
  69. if (in_array($rozszerzenie_pliku, $allow))
  70. {
  71. $result = move_uploaded_file($temp_name, $file_path);
  72. echo "<a href=$file_url>$file_url</a>";
  73. }
  74. else
  75. {
  76. echo "<script language=\"javascript\">alert('Dozwolone tylko pliki graficzne')</script>";
  77. }
  78.  
  79. }
  80.  
  81. echo ' <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
  82. Obrazek <input type="file" id="userfile" name="userfile">
  83. <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
  84. <input type="submit" name="upload" value="Załaduj">
  85. </form> ';
  86.  
  87. ?>
  88.  

Powyżej pełny kod skryptu. Drugim problemem jest to, że nie wiem jak połączyć wynik sprawdzenia rozmiaru z tym, żeby upload dokonywał się po uzyskiwaniu poprawnego rozmiaru.

Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
wookieb
post 25.12.2009, 13:19:20
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Przed filesize użyj http://pl2.php.net/clearstatcache


--------------------
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 13:33:04
Post #3





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(wookieb @ 25.12.2009, 13:19:20 ) *


Teraz pliki się ładują, ale błąd przeniósł się do 61 linii. Jest nadal ten sam.

Ten post edytował felixk 25.12.2009, 13:33:46
Go to the top of the page
+Quote Post
Lion_87
post 25.12.2009, 13:43:25
Post #4





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


  1. $rozmiar = filesize("$upload_dir$file_name");


moze jakaś kropka? ukośnik? przecinek?....
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 13:44:21
Post #5





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(Lion_87 @ 25.12.2009, 13:43:25 ) *
[PHP] pobierz, plaintext
  1. $rozmiar = filesize("$upload_dir$file_name");
[PHP] pobierz, plaintext

moze jakaś kropka? ukośnik? przecinek?....


ukośnik kończy zmienną $upload_dir, więc po co dublować ?
Go to the top of the page
+Quote Post
Lion_87
post 25.12.2009, 13:48:30
Post #6





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


to może kropka pomiędzy? ...
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 13:50:30
Post #7





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(Lion_87 @ 25.12.2009, 13:48:30 ) *
to może kropka pomiędzy? ...


Nie pomogło, jakaś inna koncepcja ?
Go to the top of the page
+Quote Post
Lion_87
post 25.12.2009, 13:57:13
Post #8





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


a po co tak z ciekawosci CI ten filesize?
nie wystarczy
  1. $file_size = $_FILES['userfile']['size'];

?
Go to the top of the page
+Quote Post
darko
post 25.12.2009, 13:57:24
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


W miejsce zmiennej $rozmiar użyć zdefiniowanej już zmiennej $file_size (linia 49. $file_size = $_FILES['userfile']['size']; ) ?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 14:10:15
Post #10





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(darko @ 25.12.2009, 13:57:24 ) *
W miejsce zmiennej $rozmiar użyć zdefiniowanej już zmiennej $file_size (linia 49. $file_size = $_FILES['userfile']['size']; ) ?


Błąd zniknął, ale w chwili gdy plik jest za duży zwraca mi wartość "0" zamiast dać komunikat, że plik za duży.
Go to the top of the page
+Quote Post
darko
post 25.12.2009, 14:18:59
Post #11





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Co zwraca wartość 0 ? Pokaż kod po zmianach, jeśli warunek zostanie spełniony powinno być die


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 14:20:18
Post #12





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(darko @ 25.12.2009, 14:18:59 ) *
Co zwraca wartość 0 ? Pokaż kod po zmianach, jeśli warunek zostanie spełniony powinno być die


  1.  
  2. <?php
  3.  
  4. $site_name = $_SERVER['HTTP_HOST'];
  5. $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
  6. $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
  7.  
  8. $upload_dir = "upload_files/";
  9. $upload_url = $url_dir."/upload_files/";
  10. $message ="";
  11. $allow = array("jpg", "jpeg", "gif", "png", "bmp");
  12.  
  13. //create upload_files directory if not exist
  14. //If it does not work, create on your own and change permission.
  15. if (!is_dir("upload_files")) {
  16. die ("Folder nie istnieje");
  17. }
  18.  
  19. if ($_FILES['userfile']) {
  20. $message = do_upload($upload_dir, $upload_url);
  21. }
  22.  
  23. print $message;
  24.  
  25.  
  26.  
  27. function do_upload($upload_dir, $upload_url) {
  28. global $allow;
  29.  
  30. $temp_name = $_FILES['userfile']['tmp_name'];
  31. $file_name = $_FILES['userfile']['name'];
  32.  
  33. $rozszerzenie_pliku = substr( $file_name, strrpos( $file_name, '.' ) +1 );
  34.  
  35. $file_name = strtolower($file_name);
  36. $file_name = str_replace("ż","z",$file_name);
  37. $file_name = str_replace("?","a",$file_name);
  38. $file_name = str_replace("Ľ","z",$file_name);
  39. $file_name = str_replace("ę","e",$file_name);
  40. $file_name = str_replace("ł","l",$file_name);
  41. $file_name = str_replace("Ł","l",$file_name);
  42. $file_name = str_replace("?","s",$file_name);
  43. $file_name = str_replace("ń","n",$file_name);
  44. $file_name = str_replace("ć","c",$file_name);
  45. $file_name = str_replace("ó","o",$file_name);
  46. $file_name = str_replace(" ", "_",$file_name);
  47.  
  48. $file_type = $_FILES['userfile']['type'];
  49. $file_size = $_FILES['userfile']['size'];
  50. $result = $_FILES['userfile']['error'];
  51. $file_url = $upload_url.$file_name;
  52. $file_path = $upload_dir.$file_name;
  53.  
  54. //File Name Check
  55. if ( $file_name =="") {
  56. echo "<script language=\"javascript\">alert('Brak nazwy pliku.')</script>";
  57. }
  58.  
  59. // File Size check
  60. $max = 512000;
  61. $file_size = $_FILES['userfile']['size'];
  62. echo $file_size; //chyba to daje "0", a tego niżej już nie wykonuje ale także nie uploaduje
  63. if ($file_size > $max)
  64. {
  65. echo "Plik za duży";
  66. }
  67.  
  68. //File Type Check
  69. if (in_array($rozszerzenie_pliku, $allow))
  70. {
  71. $result = move_uploaded_file($temp_name, $file_path);
  72. echo "<a href=$file_url>$file_url</a>";
  73. }
  74. else
  75. {
  76. echo "<script language=\"javascript\">alert('Dozwolone tylko pliki graficzne')</script>";
  77. }
  78.  
  79. }
  80.  
  81. echo ' <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
  82. Obrazek <input type="file" id="userfile" name="userfile">
  83. <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
  84. <input type="submit" name="upload" value="Załaduj">
  85. </form> ';
  86.  
  87. ?>
  88.  


Ten post edytował felixk 25.12.2009, 14:21:33
Go to the top of the page
+Quote Post
darko
post 25.12.2009, 14:22:43
Post #13





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Wywal clearstatcache


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 14:27:42
Post #14





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(darko @ 25.12.2009, 14:22:43 ) *
Wywal clearstatcache


Nie uploaduje, nie pokazuje głupot, ale już moje ostatnie pytanie jak zmusić mendę do pokazania komunikatu plik za duży questionmark.gif Bo tylko teraz tego mi brak. Ten if nie jest wykonywany
Go to the top of the page
+Quote Post
darko
post 25.12.2009, 14:32:00
Post #15





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


to jeszcze w do_upload daj
global $upload_url;
global $upload_dir;


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 14:37:09
Post #16





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(darko @ 25.12.2009, 14:32:00 ) *
to jeszcze w do_upload daj
global $upload_url;
global $upload_dir;


Znów mamy"0", a może ten IF jest źle napisany i bez sensu w tym miejscu ?
Go to the top of the page
+Quote Post
darko
post 25.12.2009, 14:46:06
Post #17





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Czy na pewno miejsce docelowe dla plików to: "upload_files//upload_files/" <-- zobacz tu masz dwa slashe ? Czyli sprawdź, jakie ścieżki podajesz funkcji uploadującej.

Ten post edytował darko 25.12.2009, 14:48:59


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 14:52:31
Post #18





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(darko @ 25.12.2009, 14:46:06 ) *
Czy na pewno miejsce docelowe dla plików to: "upload_files//upload_files/" <-- zobacz tu masz dwa slashe ?


Pliki mniejsze czyli mieszczące się w rozmiarze podanym, są uploadowane i wyświetlane. Natomiast te, które są większe nie są ładowane i nie mamy też komunikatu. A ścieżka jest poprawne, bo mniejsze pliki się poprawnie ładuja a tylko duże nie chcą.
Go to the top of the page
+Quote Post
darko
post 25.12.2009, 15:00:13
Post #19





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Duże nie chcą się uploadować, bo pewnie przekraczasz maksymalny dozwolony rozmiar pliku dla uploadu ustawiony w php.ini, Jeśli chcesz przetestować czy warunek sprawdzania rozmiaru działa, to spróbuj zmieścić się z rozmiarem przesyłanego pliku pomiędzy wielkością $max = 512000; a maksymalną dozwoloną. W celach testowych możesz nawet na czas wykonywania skryptu ustawić upload_max_filesize na jakąś większą wartość np. ini_set("upload_max_filesize", "10M");

// edit
oczywiście chodzi o to, żeby rozmiar pliku był większy od $max i mniejszy od wartości upload_max_filesize w php.ini (odpowiednio przeliczonej na bajty)

Ten post edytował darko 25.12.2009, 15:11:10


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
felixk
post 25.12.2009, 15:03:26
Post #20





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


Cytat(felixk @ 25.12.2009, 14:52:31 ) *
Pliki mniejsze czyli mieszczące się w rozmiarze podanym, są uploadowane i wyświetlane. Natomiast te, które są większe nie są ładowane i nie mamy też komunikatu. A ścieżka jest poprawne, bo mniejsze pliki się poprawnie ładuja a tylko duże nie chcą.


Dobra sprawdze i dam znać na PW co wyszło, bo chwilowo muszę wyjść i nie dam rady tego sprawdzić. Pozdrawiam i dziękuję za cierpliwość
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 14.08.2025 - 10:45