Plik includowany jest chyba prawidłowo, bo w klasie inna metoda, czyli upload pliku, bez miniaturki wykonuje się normalnie.
Dopiero gdy ma się wykonać upload z miniaturką wywala ten błąd.
index.php
<!doctype html>
<html>
<head>
<title>Upload pliku na serwer</title>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
Max 10MB <input type="file" name="file"/>
<input type="checkbox" name="mini"/> -Stwórz miniaturkę, jeśli plik jest grafiką (jpeg, png, gif)
Szerokość: <input type="text" name="width" value="200"/>px
Wysokość: <input type="text" name="height" value="150"/>px<br/>
<input type="submit" name="submit" value="Wyślij"/>
</form>
<?Php
include('class.php') //dołącza klasę
?>
</body>
</html>
class.php
<?Php
class Uploda{
public $name;
public $tmp_name;
public $type;
public $size;
public $error;
public $width;
public $height;
public $catalog;
public $maxSize;
public function Data($name, $tmp_name, $type, $size, $error, $width, $height){
$this->name = $name;
$this->tmp_name = $tmp_name;
$this->type = $type;
$this->size = $size;
$this->error = $error;
$this->width = $width;
$this->height = $height;
}
public function Settings($catalog, $maxSize){
$this->catalog = $catalog;
$this->maxSize = $maxSize;
}
public function UploadFile(){
if($this->size <= $this->maxSize){
if(move_uploaded_file($this->tmp_name, $this->catalog.$this->name)){ //zapisuje plik w folderze echo '<p>Pomyślnie wgrano plik!<p>'; }
else{
echo '<p>Błąd podczas wgrywania pliku, spróbuj ponownie!<br/> Ilość błędów w tablicy $_FILES: '.$this->error.'<p>'; }
}
else{
echo '<p>Plik jest zbyt duży!<p>'; }
}
public function UploadImageAndMini(){
if($this->size <= $this->maxSize){
if($this->type == "image/jpeg" OR $this->type == "image/png" OR $this->type == "image/gif"){ //dozwolone typy grafik
if(move_uploaded_file($this->tmp_name, $this->catalog.$this->name)){ //zapisuje plik w folderze echo '<p>Pomyślnie wgrano plik!<p>';
if($this->type == 'image/jpeg'){
$this->img = imagecreatefromjpeg($this->name); //wybiera grafikę jpeg do zmniejszenia
}
elseif($this->type == 'image/png'){
$this->img = imagecreatefrompng($this->name); //wybiera grafikę png do zmniejszenia
}
else{
$this->img = imagecreatefromgif($this->name); //wybiera grafikę gif do zmniejszenia
}
$this->img_mini = imagecreatetruecolor($this->width, $this->height); //pobiera id zdjęcia
$this->original_width = imagesx($this->img); //pobiera rozmiary oryginalnej grafiki
$this->original_height = imagesy($this->img);
if(imagecopyresampled($this->img_mini, $this->img, 0, 0, 0, 0, $this->width , $this->height, $this->original_width , $this->original_height)){ //tworzy miniaturkę
echo '<p>Pomyślnie utworzono miniaturkę!<p>';
if($this->type == 'image/jpeg'){
imagejpeg($this->img_mini, $this->catalog.'mini.'.$this->name, 80); //zapisuje jpeg w folderze
}
elseif($this->type == 'image/png'){
imagepng($this->img_mini, $this->catalog.'mini.'.$this->name, 9); //zapisuje png w folderze
}
else{
imagegif($this->img_mini, $this->catalog.'mini.'.$this->name, 80); //zapisuje gif w folderze
}
imagedestroy($this->img); //zwalnia pamięć
imagedestroy($this->img_mini);
}
else{
echo '<p>Błąd podczas tworzenia miniaturki pliku, spróbuj ponownie!<br/> Ilość błędów w tablicy $_FILES: '.$this->error.'<p>'; }
}
else{
echo '<p>Błąd podczas wgrywania pliku, spróbuj ponownie!<br/> Ilość błędów w tablicy $_FILES: '.$this->error.'<p>'; }
}
else{
echo '<p>Zły typ pliku!<p>'; }
}
else{
echo '<p>Plik jest zbyt duży!<p>'; }
}
}
if(isset($_POST['submit'])){ //sprawdza czy wciśnięto przycisk "Wyślij" $upload = new Uploda;
$upload->Data($_FILES['file']['name'],
$_FILES['file']['tmp_name'],
$_FILES['file']['type'],
$_FILES['file']['size'],
$_FILES['file']['error'],
$_POST['width'],
$_POST['height']);
$upload->Settings('https://www.adresstrony.pl/NowyFolderDoZapisu/', 10000000); //Folder docelowy i max rozmiar pliku
if(!isset($_POST['mini'])){ //sprawdza czy wybrano opcję miniaturki $upload->UploadFile();
}
else{
$upload->UploadImageAndMini();
}
}
else{}
?>
Już wiem gdzie leży dokładniej błąd
W klasie powyżej jest to linijka 127:
$upload->Settings('https://www.adresstrony.pl/NowyFolderDoZapisu/', 10000000); //Folder docelowy i max rozmiar pliku
Jeśli pliku są w katalogu home:
Kod
*HOME
-index.php
-class.php
To ścieżka pod którą mają zostać zapisane pliki musi wyglądać tak:
$upload->Settings('https://www.adresstrony.pl/', 10000000); //Folder docelowy i max rozmiar pliku
A gdy pliku są w folderze NowyFolder:
Kod
*HOME
*NowyFolder
-index.php
-class.php
To ścieżka pod którą mają zostać zapisane pliki musi wyglądać tak:
$upload->Settings('https://www.adresstrony.pl/NowyFolder/', 10000000); //Folder docelowy i max rozmiar pliku
Czyli plik z miniaturką musi być zapisywany w tym samym miejscu co jest klasa, ale gdybym chciał zapisać go w inne miejsce docelowe to nie działa.
Co muszę zmienić?
Podkreślę, że sam plik mogę zapisać gdzie mi się podoba, ale z miniaturką tak już nie jest.
Temat do kosza (IMG:
style_emoticons/default/smile.gif)