[ miljakovic @ 03.07.2017. 23:36 ] @
Pozdrav, muci me jedan deo u skripti za upload slika. Naime, slike koje su sa ekstenzijom jpg, jpeg, gif i png bez problema postavljam na server i citam iz baze, ali slike sa JPG ekstenzijom nikako ne upsevam. Nalazio sam razne predloge za resenje ovog probema, ali ni jedan mi nije upalio. Vec nekoliko dana stojim u mestu sa tim problemom, a imam ih jos nekoliko drugacije prirode.
evo, postavicu i deo skripte koji radi sa lowercase formatima: ovde koristim promenljivu FileToUpload1 mada sam napravio kasnije niz za ovu promenljivu da ne bih morao da je copy-paste 20 puta za 20 slika

kod je:

function Img_Resize($path)
{

list ($width, $height, $img_type) = @ getimagesize($path);

$rs_height = 400;
$proc=400/$height;
$rs_width = $width*$proc; // sve slike dovodi na height 400 pix

switch ($img_type) {
case '1' : //'image/gif':
$img = imagecreatefromgif($path);
break;
case '2' : //'image/jpeg':
$img = imagecreatefromjpeg($path);
break;
case '3' : //'image/png':
$img = imagecreatefrompng($path);
break;
default :
break;
}

$img_base = imagecreatetruecolor($rs_width, $rs_height);
imagecopyresized($img_base, $img, 0, 0, 0, 0, $rs_width, $rs_height, $width, $height);

$path_info = pathinfo($path);
switch ($path_info['extension']) {
case "gif":
imagegif($img_base, $path);
break;
case "jpg":
imagejpeg($img_base, $path);
break;
case "JPG":
imagejpeg($img_base, $path);
break;
case "jpeg":
imagejpeg($img_base, $path);
break;
case "png":
imagepng($img_base, $path);
break;
}
}

$target_dir = "users/" . $kor . "/" . $num . "/";

if(basename($_FILES["fileToUpload1"]["name"])!="")

// ovde negde lezi problem ??? ili gore kod switch ($img_type) ali tu sam probao da smanjim slova ekstenzije ali nista nisam postigao jer m i nije radilo move_uploaded_file. u bazi mi ucita originalnu sliku i putanju ali mi na serveru nema slike u zeljenom folderu. ne radi mi upload slike

{
$target_file = $target_dir . basename($_FILES["fileToUpload1"]["name"]);
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
move_uploaded_file($_FILES["fileToUpload1"]["tmp_name"], $target_file);
$img = Img_Resize($target_file);
$ima=mysql_num_rows(mysql_query("select * from nudim_slike where id='$num' and slika='$target_file'"));
if($ima==0) $ins="insert into nudim_slike (id, slika) values ('$num','$target_file')";mysql_query($ins);
}


Hvala svima na pomoci unapred.
[ Predrag Supurovic @ 04.07.2017. 07:13 ] @
A što ne središ ime datoteke pre nego što ga upotrebiš?

Ja bih, na primer, obavezno preveo ime datoteke u sva mala slova. Zatim bih sredio ekstenziju tako da umesto jpg, jpeg, JPG, JPEG ili šta već neko može da pošalje, uvek ektenziju svedem na jpg. Tako bi mi kasniej bilolakše jer bih uvek radio sa istim formatom naziva datoteke bez obzira šta je poslato.

Jesi li proverio šta će ti se desiti ako neko pošalje PNG datoeku ali joj greškom stavi ekstenziju JPG?


[ miljakovic @ 04.07.2017. 13:53 ] @
prepravio sam malo skriptu prema savetu Predrag Supurovic, ali i dalje ne prenosi sliku na server ili nisam odradio opet taj deo kako treba. u bazi je lepo ucitana sa malim slovima. i target_file je dobra slika i sa malim slovima, samo mi nikako ne odradi deo move_uploaded_file, tu nesto nije u redu, mozda gresim u rasporedu naredbi. target_dir inace je ok, to bude npr: users/miljakovic/brponude152/
ovo mi je prvi put da se srecem sa problemom postavljanja slike na server koju ne biram ja nego korisnik, tako da mi je iskustvo po tom pitanju skoro nula. Dosta sam foruma prelistao ali nesto ne radim kako treba.

function Img_Resize($path)
{
list ($width, $height, $img_type) = @ getimagesize($path);
$rs_height = 400;
$proc=400/$height;
$rs_width = $width*$proc;
$img = imagecreatefromjpeg($path);
$img_base = imagecreatetruecolor($rs_width, $rs_height);
imagecopyresized($img_base, $img, 0, 0, 0, 0, $rs_width, $rs_height, $width, $height);
}

$target_dir = "users/" . $kor . "/" . $num . "/";
$slika=basename($_FILES["fileToUpload1"]["name"]);
$slika=strtolower($slika);
imagejpeg($slika, $slika.'.jpg', 70);
if($slika!="")
{
$target_file = $target_dir . $slika;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
$img = Img_Resize($target_file);

move_uploaded_file($_FILES["fileToUpload1"]["tmp_name"], $target_file);

$ima=mysql_num_rows(mysql_query("select * from nudim_slike where id='$num' and slika='$target_file'"));
if($ima==0) $ins="insert into nudim_slike (id, slika) values ('$num','$target_file')";mysql_query($ins);
}
[ iglig @ 04.07.2017. 14:20 ] @
Ne radi zato što pozivaš strtolower() i zato što koristiš, Win/Osx. Na Unix/Gnu Linux sistemima naredni fajlovi nisu isti.
slika.JPG != slika.jpg != slika.jPg != Slika.JPG...
Možda imaš još neku grešku, nisam čitao ostatak koda jer nisam pri računaru.
[ miljakovic @ 04.07.2017. 14:32 ] @
A kako onda da bilo koju ekstenziju konvertujem u .jpg? ako preskocim to smanjivanje slova, onda samo ostavim imagejpeg($slika, $slika.'.jpg', 70)? i to sam pokusavao ali opet ne prebacuje sliku. doduse ja radim na windowsu na localhostu pa tu sliku samo hocu da prebacim iz nekog foldera u ovaj koji je zadat ovde.
[ Predrag Supurovic @ 04.07.2017. 16:10 ] @
Meni s e;ini da ima[ oybiljnu gre[ku u liniji

imagejpeg($slika, $slika.'.jpg', 70);

To $slika je prema kodu string koji sadrži naziv datoteke a ti ga prosleđuješ funkciji imagejpg() kao da je to sadržaj same slike.


Takođe, ako ti treba ime datoteke gde se nalazi uploadovana slika to je $_FILES['fileToUpload1']['tmp_name'] a ne $_FILES['fileToUpload1']['filename']

[ miljakovic @ 04.07.2017. 16:23 ] @
da, o tome nisam razmisljao. kazem, ovo mi je vatreno krstenje.
pitao sam se kakav redosled treba da postavim
trenutno preuzimam naziv slike, smanjujem, pokusavam konvert, pa upload, sto je greska
ispravno bi bilo:
1. prebacim fajl na server
2. konvertujem u jpg sliku na serveru
3. upisem u bazu
4. obrisem original na serveru, ostaje samo jpg

[ miljakovic @ 11.07.2017. 13:46 ] @
zaboravio sam da dodam jedan komentar:

skripta je radila od pocetka kako treba jedino je nedostajao deo koji proverava velicinu fajla, pa zato nije radilo sve. Sve slike koje su mi pravile problem bile su preko 3MB. Sve koje sam probao a da su manje od 2MB, bez obzira da li je pisalo jpg ili JPG bile su prebacene. Eto, samo toliko. Skripta je inace preuzeta sa nekog od foruma, ima ih na desetine, nije tesko da se nadju.

Hvala jos jednom svima.
[ Nemanja Avramović @ 11.07.2017. 16:54 ] @
Onda si ti pogrešno postavio pitanje, pitao si za ekstenziju fajla, ne za veličinu :)

Pogledaj ova dva linka:

http://php.net/manual/en/ini.core.php#ini.upload-max-filesize
http://php.net/manual/en/ini.core.php#ini.post-max-size