Oto szablon:
oraz kontroler:
<?php { $pageTitle = 'Dodawanie realizacji'; $config['thumbnail_width'] = 400; // maksymalna szerokość miniatury w pikselach $config['thumbnail_height'] = 400; // maksymalna wysokość miniatury w pikselach $config['thumbnail_scale'] = true; // czy przy minimalizowaniu wielkości zachowywać skalę? $config['path_images'] = '../../grafika/realizacje/obrazki/'; // ścieżka do katalogu grafik $config['path_thumbnails'] = '../../grafika/realizacje/miniaturki/'; // Ścieżka do katalogu miniatur $config['max_file_size'] = 2097152; // maksymalna wielkość pliku w bajtach, 2MB $config['accepted_mimes'] = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif'); // dozwolone typy MIME } chmod($config['path_images'], 0777); // nadanie praw } } chmod($config['path_thumbnails'], 0777); // nadanie praw } } } { // pÄ™tla analizujÄ…ca zawartość wszystkich trzech potencjalnie wysyĹ‚anych plikĂłw foreach ( $_FILES['upload_image']['error'] as $key => $arr ) { if ( $_FILES['upload_image']['error'][$key] != UPLOAD_ERR_OK ) { continue; } if ( $_FILES['upload_image']['size'][$key] > $config['max_file_size'] ) { $error = "Plik jest za duży. "; $imageerror = ' Wybrany przez Ciebie plik:' . $_FILES['upload_image']['name'][$key]; continue; } { $error = "Plik o takiej nazwie już istanieje. "; $imageerror = ' Wybrany przez Ciebie plik:' . $_FILES['upload_image']['name'][$key]; continue; } if ( in_array(strtolower($extension[count($extension)-1]), $config['accepted_extensions']) === false || in_array($_FILES['upload_image']['type'][$key], $config['accepted_mimes']) === false ) { $error = "Niepoprawne rozszerzenie pliku."; continue; } { $error = "Plik graficzny jest spreparowany."; continue; } { $error = "Plik nie został wysłany."; continue; } if ( !move_uploaded_file($_FILES['upload_image']['tmp_name'][$key], $config['path_images'] . $_FILES['upload_image']['name'][$key]) ) { $error = "Wysyłanie nie może zostać zakończone."; continue; } // opcjonalnie, jeĹźeli chcemy tylko z poziomu skrypt mieć dostÄ™p do plikĂłw moĹźemy odkomentować poniĹźsza linijkÄ™ // chmod($config['path_images'] . $_FILES['upload_image']['name'][$key], 0600); } } function generateThumbnail($filename, $extension) { // sprawdzenie, czy plik o podanej nazwie już nie istnieje { } // stworzenie nowej grafiki wg typu switch ( $extension ) { case 'gif': $ic = imagecreatefromgif($config['path_images'] . $filename); break; case 'png': $ic = imagecreatefrompng($config['path_images'] . $filename); break; default: $ic = imagecreatefromjpeg($config['path_images'] . $filename); break; } if ( $ic === false ) { return 'Miniaturka nie stworzona!'; } switch ( $config['thumbnail_scale'] ) { case false: // zmniejszanie bezpośrednio do 180x160px $nts = imagecreatetruecolor($config['thumbnail_width'], $config['thumbnail_height']); imagecopyresized($nts, $ic, 0, 0, 0, 0, $config['thumbnail_width'], $config['thumbnail_height'], $is[0], $is[1]); break; default: // zmniejszanie z zachowaniem skali, aż do osiągnięcia co najmniej 180x160px $width = $is[0]; $height = $is[1]; $ratio = $is[0] / $config['thumbnail_width']; if ( $ratio > 1 ) { $width = $config['thumbnail_width']; } $ratio = $height / $config['thumbnail_height']; if ( $ratio > 1 ) { $height = $config['thumbnail_height']; } $nts = imagecreatetruecolor($width, $height); // utworzenie obrazka o podanych rozmiarach z czarnym tłem imagecopyresized($nts, $ic, 0, 0, 0, 0, $width, $height, $is[0], $is[1]); break; } switch ( $extension ) // zapis do pliku { case 'gif': imagegif($nts, $config['path_thumbnails'] . $filename); break; case 'png': imagepng($nts, $config['path_thumbnails'] . $filename); break; default: imagejpeg($nts, $config['path_thumbnails'] . $filename); break; } imagedestroy($nts); // zniszczenie obrazka return $config['path_thumbnails'] . $filename; } include 'addproductform.html.php'; //Powrót do formularza } ?>
Kontroler posiada jeszcze parę innych funkcji dlatego część z dodawaniem zdjęcia umieściłem w instrukcji if. Problem jest taki, że tworzenie miniatury nie powodzi się. Po kliknięciu przycisku "Dodaj" - dodaje się samo zdjęcie, a przeglądarka pokazuje błąd "500" mianiturka nie tworzy się.
Problem ten występuje tylko gdy kod dodający zdjęcie i tworzący miniaturę umieszczę wewnątrz instrukcji if.
Gdy cały kod jest poza if wszystko działa. Proszę o pokazanie mi gdzie jest problem. Zależy mi na tym, żeby kod był wewnątrz instrukcji if.
Proszę o pomoc.