Upload + resize

Programovacie jazyky, rady, poradňa...
camo
Medium Expert
Medium Expert
Príspevky: 98
Registrovaný: 05 sep 2009, 14:01
Bydlisko: Lehota
Kontaktovať používateľa:

Upload + resize

Príspevok od používateľa camo »

Zdravím vás!
Môže mi prosím vás niekto vysvetliť nasledovnú vec:
Mám script ktorý uploduje a vytvára aj miniatúry. No a problém je v tom, že mi raz sa obrázok aj s miniatúrou nahrá a inokedy sa zasekne pri uložení miniatúry. Je to čudné preto, že ak mám dve fotky vo formáte jpg, tak raz sa upload podarí a inokedy sa nahrá len veľký obrázok a script nevytvorí miniatúru. Proste raz to funguje a raz nie. Pritom formát je rovnaký. Problém je s funkciou imagejpeg().
Tu je aj kód(chybu som označil):

Kód: Vybrať všetko

if(isset($_FILES['obrazok']) && is_uploaded_file($_FILES['obrazok']['tmp_name'])){
		$_SESSION['mesageAdmin'] = 'Chyba: ';

		$max_velkost_obrazku = 150000;
    		$adresar = '../../pictures/torty/';      // Cielovy odresar prenosu
		$adresarB = '../../pictures/tortyB/';
          $obrazok = $_FILES['obrazok'];

		switch ( $obrazok['error'] ){     		// Overenie vsetkych moznych chyb
				case UPLOAD_ERR_INI_SIZE:	// veľkosť súboru prekročila limit nastavený v súbore php.ini
					$_SESSION['mesageAdmin'].= 'Velkost obrázku prekročila povolený limit '.$max_velkost_obrazku.'bajtov. ';
					break;

				case UPLOAD_ERR_PARTIAL: 	// počas načítania súboru došlo ku chybe, bola načítaná len časť
                		$_SESSION['mesageAdmin'].= 'Pri odoslaní súboru došlo k chybe. Skúste to prosím znovu. ';
                		break;

            		case UPLOAD_ERR_NO_FILE: 	// nepodarilo sa na server odoslať žiadny súbor
                         $_SESSION['mesageAdmin'].= 'Nebol vybratý žiadny súbor, vyberte ho. ';
                    	break;

                    case UPLOAD_ERR_OK:
                		if ( $obrazok['size'] > $max_velkost_obrazku ){
                    			$_SESSION['mesageAdmin'].= 'Obrázok je príliš veľký. Nemôže mať viac než 150Kb. ';
                		}
                		break;

				default:
                		$_SESSION['mesageAdmin'].= 'Došlo ke neznámej chybe. Skúste to znovu. ';
		}
		if ( !in_array ( $obrazok['type'], array ( 'image/jpeg', 'image/pjpeg', 'image/png', 'image/gif' ) ) ){  // musime overit ci su obrazky PNG, GIF alebo JPEG
				$_SESSION['mesageAdmin'].='Bol zistený nepovolený formát. Povolené sú formáty jpg, png a gif. ';
		}
  		if($_SESSION['mesageAdmin']!='Chyba: '){
				header('location:http://localhost/cukrarengianka.sk/backend/galeriaAdmin/uploadGaleria.php');
				exit;
		}
		$time=time();  //  jedinecny retazec
  		$nameExpld=explode('.', $obrazok['name']);
		$newName=$nameExpld[0].'_'.$time.'.jpg';
		$newNameB='B'.$nameExpld[0].'_'.$time.'.jpg';

		$is_jpg=true;  //  ak je povodny obrazok jpg tak sa zbytocne nekonvertuje(len miniatura), lebo by stratil na kvalite, ale sa priamo uklada
		$gd_obrazok=convert_to_gd($obrazok['tmp_name']);  //  nativny PHP format, je vyzadovany mnohymi GD funkciami

		if($is_jpg){
				if( !@move_uploaded_file( $obrazok['tmp_name'], $adresarB.$newNameB) ){
    						$_SESSION['mesageAdmin'].='Súbor sa nepodarilo nahrať na sever 1.';
						myLog('error: Nepodarilo sa nahrat fotku na server, uz v prvom kroku.');
                    		header('location:http://localhost/cukrarengianka.sk/backend/galeriaAdmin/uploadGaleria.php');
                    		exit;
				}
		}
		else{     if( !imagejpeg( $gd_obrazok, $adresarB.$newNameB , 90) ){
                              $_SESSION['mesageAdmin'].='Súbor sa nepodarilo nahrať na sever 1.';
						myLog('error: Nepodarilo sa nahrat fotku na server, uz v prvom kroku.');
                    		header('location:http://localhost/cukrarengianka.sk/backend/galeriaAdmin/uploadGaleria.php');
                    		exit;
				}
		}
  		$org_sirka = imagesx($gd_obrazok);
		$org_vyska = imagesy($gd_obrazok);
		if($_POST['vyska']=='' or $_POST['vyska']<80){
				$miniVyska=150;
		}
		else{	$miniVyska=$_POST['vyska'];
		}
		$pomer=$org_vyska/$miniVyska;
		$miniSirka=$org_sirka/$pomer;
		
		$miniObrazok = imagecreatetruecolor($miniSirka, $miniVyska);   // toto tu musi byt vid. php.net
		imagecopyresampled($miniObrazok, $gd_obrazok, 0, 0, 0, 0, $miniSirka, $miniVyska, $org_sirka, $org_vyska);
		
/*tu je chyba*/  if( !imagejpeg( $miniObrazok, $adresar.$newName , 90) ){
                              $_SESSION['mesageAdmin'].='Súbor sa nepodarilo nahrať na sever 2.';
						myLog('error: Nepodarilo sa nahrat fotku na server, v druhom kroku.');
                    		header('location:http://localhost/cukrarengianka.sk/backend/galeriaAdmin/uploadGaleria.php');
                    		exit;
		}
		$query='insert into fotos (src) values ("'.$newName.'")';
		if(!@mysql_query($query)){
                              $_SESSION['mesageAdmin'].='Súbor sa nepodarilo nahrať do databázy.';
						myLog('error: Nepodarilo sa nahrat fotku do databázy. Fotka je naharatá iba v oboch adresároch.');
                    		header('location:http://localhost/cukrarengianka.sk/backend/galeriaAdmin/uploadGaleria.php');
                    		exit;

		}
		$_SESSION['mesageAdmin']='Hurá, obrázok bol uložený na server.';
}
//autoeditácia príspevku (26 Dec 2011, 20:52)
Tak so na to prišiel. Problém bol v tom, že som testoval príponu a nerátal som s veľkými písmenami
Napísať odpoveď