Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ograniczenie wielkości zdjęcia w px przy upload file
Forum PHP.pl > Forum > PHP
KrisKros123
Witam,

mam taki skrypt PHP do przesyłu pliku na serwer:

  1. <?php
  2. $f = $_FILES['plik_upload'];
  3. IF($f['type'] == 'image/png' or
  4. $f['type'] == 'image/jpeg' or
  5. $f['type'] == 'image/gif')
  6. {
  7. $x =
  8. getimagesize($f['tmp_name']);
  9. IF(!is_array($x) or $x[0] < 2)
  10. {
  11. die('Zły plik graficzny');
  12. }
  13. $patch = str_replace('upload.php', '', $_SERVER['SCRIPT_FILENAME']);
  14. copy($f['tmp_name'], $patch.$f['name']);
  15. }
  16. else {
  17. echo 'Niedozwolony plik dozwolone to: *png, *jpg, *gif';
  18. }



I chodzi o to żebym miał jeszcze ograniczenie do wielkości zdjęcia np. żeby plik o rozmiarach > 250px na 250px nie został przesłany, czyli nie większy. Jak to zrobić umieszczając to w tym kodzie?? Proszę o pomoc. Z góry dziękuję.


StrefaPi
Pobierasz funkcją getimagesize() już wszystkie dane /linia 8 Twojego kodu/ zobacz co zwraca ta funkcja i zrób poprawny if.
KrisKros123
Żeby zobaczyć co zwraca zrobiłem tak

  1. $rozmiar = getimagesize($f['tmp_name']);
  2. echo $rozmiar ;


ale tylko wyskakuje mi array, potem zrobiłem krok dalej i dopisałem:

  1. getimagesize($f['tmp_name']);
  2. IF(!is_array($x) or $x[0] > 250){
  3. /*Dalszy skrypt*/
  4. }


ale wysyła mi tylko większe. Co robię źle??
StrefaPi
  1. var_export($rozmiar);


prawidłowo wysyła...

$x[0] > 250 - oznacza rozmiar większy niż 250
KrisKros123
No tak, nie ten znak wstawiłem teraz działa idealnie.

  1.  
  2. <?php
  3. $f = $_FILES['plik_upload'];
  4. IF($f['type'] == 'image/png' or
  5. $f['type'] == 'image/jpeg' or
  6. $f['type'] == 'image/gif')
  7. {
  8. $x = getimagesize($f['tmp_name']);
  9. IF(!is_array($x) or $x[0] < 2)
  10. {
  11. die('Zły plik graficzny');
  12. }
  13. $y = getimagesize($f['tmp_name']);
  14. IF(!is_array($x) or $x[0] < 250){
  15. IF(!is_array($y) or $y[0] < 250){
  16.  
  17. $patch = str_replace('upload.php', '', $_SERVER['SCRIPT_FILENAME']);
  18. copy($f['tmp_name'], $patch.$f['name']);
  19.  
  20. }
  21. else{
  22. echo "Za duży rozmiar na osi y maksymalny to 250px";
  23. }
  24. }
  25. else{
  26. echo "Za duży rozmiar na osi x maksymalny to 250px";
  27. }
  28.  
  29. }
  30. else {
  31. echo 'Niedozwolony plik dozwolone to: *png, *jpg, *gif';
  32. }
  33.  
  34.  
StrefaPi
Zrób jednego ifa a nie trzy, rozmiar też pobierasz kilka razy, a wystarczy tylko raz.
KrisKros123
Popatrzyłem, pomyślałem i wykombinowałem smile.gif. Kod:

  1. <?php
  2. $f = $_FILES['plik_upload'];
  3. IF($f['type'] == 'image/png' or
  4. $f['type'] == 'image/jpeg' or
  5. $f['type'] == 'image/gif')
  6. {
  7. $x = getimagesize($f['tmp_name']);
  8. IF(!is_array($x) or $x[0] < 2 or $x[0] > 250)
  9. {
  10. die('Zły rozmiar zdjęcia');
  11. }
  12.  
  13.  
  14. $patch = str_replace('upload.php', '', $_SERVER['SCRIPT_FILENAME']);
  15. copy($f['tmp_name'], $patch.$f['name']);
  16.  
  17. }
  18. else {
  19. echo 'Niedozwolony plik dozwolone to: *png, *jpg, *gif';
  20. }
  21.  
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.