Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] skrypt robiący miniatury
Forum PHP.pl > Forum > Przedszkole
Neojawor
Mam skrypt, który najpierw robi upload pliku, a później zmniejsza go i nadpisuje. Coś niestety nie działa:
  1. <?php
  2. // ------- ładowanie pliku pliku
  3. $typ=getimagesize($_FILES['fota']['tmp_name']);
  4. if ($_FILES['fota']['type'] =='image/jpeg' || $_FILES['fota']['type'] == "image/png")
  5. {
  6.  $nazwa_pliku = "zdjecia/" . $_FILES['fota']['name'] ; 
  7.  $rozmiar = $_FILES['fota']['size'] / 1024;
  8.  // skrypt kopiujący plik na serwer
  9.  if(is_uploaded_file( $_FILES['fota']['tmp_name'] ) )
  10.  {
  11. if( move_uploaded_file( $_FILES['fota']['tmp_name'], $nazwa_pliku ) )
  12. {
  13.  // -------------------definicja funkcji do zmiany rozmiaru pliku
  14.  function image_resize($docelowy, $stary_plik, $max_x, $max_y)
  15.  {
  16. //funkcja zmniejsza zdjęcie proporcjonalnie, a oto parametry
  17. //$docelowy - ścieżka docelowego pliku
  18. //$stary_plik - ścieżka pliku źródłowego
  19. //$max_x - maksymalna szerokość zdjęcia
  20. //$max_y - maksymalna wysokość zdjęcia
  21. if($_FILES['fota']['type'] =='image/jpeg' )
  22. {
  23.  $plik=imagecreatefromjpeg($stary_plik);
  24. }
  25. elseif($_FILES['fota']['type'] == "image/png")
  26. {
  27.  $plik=imagecreatefrompng($stary_plik);
  28. }
  29. else
  30. {
  31.  die('Zly typ pliku, akceptowalne typy to: JPG/JPEG, PNG');
  32. }
  33. $stary_x=imagesx($plik);
  34. $stary_y=imagesy($plik);
  35. if($stary_x>$stary_y)
  36. {
  37.  $proporcje=$max_x / $stary_x;
  38. }
  39. else
  40. {
  41.  $proporcje=$max_y / $stary_y;
  42. }
  43. if($proporcje<1)
  44. {
  45.  $nowy_x=$stary_x * $proporcje;
  46.  $nowy_y=$stary_y * $proporcje;
  47.  $nowy_plik= imagecreatetruecolor($nowy_x, $nowy_y);
  48.  imagecopyresampled($nowy_plik, $plik, 0, 0, 0, 0, $nowy_x, $nowy_y, $stary_x, $stary_y);
  49. }
  50. if($_FILES['fota']['type'] =='image/jpeg' )
  51.  imagejpeg($nowy_plik, $docelowy, 96);
  52. else
  53.  imagejpeg($stary_plik, $docelowy, 96);
  54.  }//koniec funkcji image_resize
  55.  
  56.  $docelowy="zdjecia/" . $_FILES['fota']['name'];
  57.  image_resize($docelowy, $nazwa_pliku, 700, 700);
  58.  echo '<h3>Plik został załadowany!</h3><br />';
  59. }
  60. else
  61.  echo 'Upload pliku nie powiódł się!';
  62.  }
  63.  else
  64.  {
  65. echo 'Wystąpił błąd podczas wysyłania pliku na serwer!n';
  66. echo 'Proszę sprawdzić, czy plik nie przekracza rozmiaru 1MB';
  67.  }
  68. }
  69. else
  70.  echo "Wybrany plik ma niepoprawne rozszerzenie. Dodać można tylko obrazy typu jpg/jpeg i png<br>";
  71. echo $nowy_x . " x " . $nowy_y;
  72. ?>

ostatnia linijka służyła do sprawdzenia jakie są wartości nowych rozmiarów pliku. Niestety wygląda na to, że te zmienne nie mają żadnych wartości, bo nic się nie wyświetla.
Dodam, nie wyświetla się żaden błąd. Skrypt przechodzi bez problemu, ale plik na serwerze się nie pojawia
jarrod
od końca:
te zmienne nie są widoczne poza ciałem funkcji!

po co w ogóle ta funkcja skoro chowasz ją za tyloma IF-ami. Trochę bez sensu.

Dwa razy sprawdzasz typ pliku.

Czy sprawdziłeś czy ta funkcja w ogóle się wykonuje? Jeśli tak to jakie warunki są spełnione w tej funkcji?
Neojawor
Dzięki jarrod za dawkę logicznego myślenia. Okazuje się że skrypt działa. Wczoraj byłem zbyt już zmęczony żeby zaóważyć błąd. Na końcu skryptu dałem skrypt javy, który miał mnie przenosić do nowo utworzonego pliku. Tam po prostu podawałem złą ścieżkę i wyświetlało, że brak pliku, mimo że plik tam jest.
Co do zmiennych, to faktycznie są widoczne tylko wewnątrz mojej funkcji (tu brak wyedukowania się kłania).

Mam jednak pytanie - ja najpierw ładuję plik na serwer, a później dopiero zmniejszam, czy nie dałoby się pominąć uploadu, tzn zrobić zaczep do pliku przekazanego przez formularz, zmniejszyć go i dopiero wtedy zapisać na serwer?
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.