Autor | Zpráva | ||
---|---|---|---|
peta Profil * |
#1 · Zasláno: 9. 2. 2006, 10:29:35
Lze zjistit velikost obrazku a rozmery pred upload?
Lze zjistit rozmery obrazku jinak nez pres GD (mam pokusny test na xhostingu a nefunguje mi tam funkce GetImageSize, resp ted presne nevim proc, mozna spatny zapis, takze touhle zavorkou se nezabyvejte) pro pridavani foto mam script $tabulka = $tb1."insertion"; $dotaz = "INSERT INTO $tabulka VALUES ('$dotaz')"; mysql_query($dotaz) or die("DB error: add inserat = ".mysql_error()); $dotaz = "SELECT * FROM $tabulka ORDER BY `i1_lastdate` DESC LIMIT 1"; $vysledek = mysql_query($dotaz) or die("DB Error: insertion find! ".mysql_error()); $pocet = mysql_NumRows($vysledek); if ($pocet===1) { $row2 = mysql_fetch_array($vysledek); $id=$row2['id']; $MAX_SIZE = 102400; $FILE_MIMES = array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png'); $FILE_EXTS = array('.jpeg','.jpg','.png','.gif'); $in2['photo']=""; $photo = array(); $photo = isset($_FILES['i1_photo0'])?$_FILES['i1_photo0']:$HTTP_POST_FILES['i1_ photo0']; if ($photo['name']!=="" && is_uploaded_file($photo['tmp_name']) && $photo['size']<$MAX_SIZE) { $file_ext = strtolower(substr($photo['name'],strrpos($photo['name'],"."))); if (in_array($photo['type'], $FILE_MIMES) && in_array($file_ext, $FILE_EXTS) ) { $filepath=$pathPhotoI.'/'.$id.$file_ext; move_uploaded_file($photo['tmp_name'],$filepath); //copy $in2['photo']=$filepath; } else $chyba.= " | Photo - spatny typ nebo pripona"; } else $chyba.= " | Photo - spatna velikost souboru nebo nazev (nebo typ)"; $dotaz = "UPDATE $tabulka SET `i1_photo0`='".$in2['photo']."' WHERE `id`='$id' LIMIT 1"; mysql_query($dotaz) or die("DB Error: insertion add photo: ".mysql_error()); } .... a jestli to spravne chapu, obrazek (soubor) se presune do tempu, kde si z nej muzu precist, co chci a pak jej presunu na svou adresku. Mimo to tam je script pro vlozeni inzeratu, nacteni inzeratu, abych ziskal ID, kterym pak pojmenuji foto. Ja bych nejlepe chtel zabranit prenosu souboru, pokud nevyhovuje. odesilaci pole vypada takto: <tr> <td><?=$lng['i1_Photo']?>1</td> <td><input type="file" value="<?=$p[12]?>" name="i1_photo0" ACCEPT="image/*" /> (max. 100 kb)</td></tr> (sem nekde nasel, ze se tam dava accept) |
||
medden Profil * |
#2 · Zasláno: 9. 2. 2006, 13:24:20
> Lze zjistit velikost obrazku a rozmery pred upload?
No, asi to pôjde dosť ťažko, pretože php je spracovaný na strane servera... Možno javascriptom. Prípadne sa dá obmedziť: <input type="hidden" name="MAX_FILE_SIZE" value="300" /> ale nie presne získať (ale asi to získanie chceš na obmedzenie, takže toto postačí). Niektoré prehliadače to ale neberú: holt majú smolu. Mimochodom, keď užívateľ predsa pošle väčší súbor, tak na server myslím dorazí iba prázdny request (tzn treba to ošetriť). > Lze zjistit rozmery obrazku jinak nez pres GD Asi si to ozaj zle používal, lebo podľa manuálu: Note: The getimagesize() function does not require the GD image library. Možno si namiesto cesty dával obsah obrázka ... |
||
peta Profil * |
#3 · Zasláno: 9. 2. 2006, 14:29:51
medden
getimagesize() Ano, sory, sem prehlid ve zdroji... http://www.builder.cz/art/php/rsupload.html Mel jsem tam jinou chybu. Chtel jsem treti polozku pole a nejak jsem to spatne zapsal a pouzival jsem proste treti pismenko z nazvu souboru. Jinak presne, slo mi o velikost. Momentalne to mam osetrene tak, ze pokud mi ve file prijde "" tak se nic nevykona. Zkusim to maxsize. Mi osobne je to celkem jedno, ale predstav si pripad, ze ti nekdo zacne posilat 100M obrazek, ktery se nakonec stejne odmitne. Nekde jsem cetl, mozna v tom clanku, ze server ma nejake omezeni pro velikost souboru, jak se to da zobrazit, kolik to je? A potom by se mi mozna jeste hodil transformacni script na zmenu rozmeru. Zatim pouzivam jen pri zobrazovani, ale pozdji bych nahral velikou foto a chtel zmensit na 80x80, plus spravny pomer stran. cast vypisovaciho scriptu vypada ted takto: $photo = $row2['i1_photo0']; if ($photo!=="" && File_Exists($photo)) { $w0=80;$h0=80; $alt = ($name!=="")?$name:substr($photo,strrpos($photo,"/")+1); $img = GetImageSize($photo); // vyuziti knihovny GD pro zjisteni rozmeru obrazku, 0 sirka, 1 vyska, 2 typ (gif), 3 string height=xxx width=xxx $w=$img[0]; $h=$img[1]; if ($w!==$w0 || $h!==$h0) { if ($w>$h) {$h=floor($h*$w0/$w);$w=$w0;} else {$w=floor($w*$h0/$h);$h=$h0;} } $wh='width="'.$w.'" height="'.$h.'"'; $photo = '<img src="'.$photo.'" '.$wh.' alt="'.$alt.'" />'; } |
||
peta Profil * |
#4 · Zasláno: 9. 2. 2006, 14:30:50
a, pardon, v kodu jsem nesmazal popisek s tim GD, coz jsem se mylil...
|
||
peta Profil * |
#5 · Zasláno: 9. 2. 2006, 14:51:04
medden
Asi neco delam spatne s tim maxsize... <input type="hidden" name="MAX_FILE_SIZE" value="<?=$maxsizePhotoi?>" /> <tr> <td><?=$lng['i1_Photo']?>1</td> <td> <input type="file" value="<?=$p[12]?>" name="i1_photo0" ACCEPT="image/*" /> (max. <?=$maxsizePhotoi?>b)</td></tr> Firefox mi to nebere zadny soubor. |
||
Suta Profil |
#6 · Zasláno: 9. 2. 2006, 14:59:43
Já jsem si dle různých návodů udělal tento script, vytvoří ti velké fotky a zároveň i náhledové v přesném poměru, pouze si uprav, jakou délku má mít vždy delší strana obrázku. Vykastroval jsem to co to jen šlo, snad se v tom vyznáš, v komentářích by to mělo být snad přehledně :)
|
||
peta Profil * |
#7 · Zasláno: 9. 2. 2006, 16:07:31
Suta
Dik, ja, az to budu potrebovat, zkusim neco solidni taky vystarat na inetu, ale pro srovnani neni nikdy dost scriptu. |
||
peta Profil * |
#8 · Zasláno: 9. 2. 2006, 16:16:44
max size, sory, to jeste zkusim, chyba byla jinde. Sem zapomnel na jeden "$" u velikosti souboru, jsme zvykly psat promenne v JS bez nej.
|
||
medden Profil * |
#9 · Zasláno: 9. 2. 2006, 18:44:05
> Nekde jsem cetl, mozna v tom clanku, ze server ma nejake omezeni pro velikost souboru, jak se to da zobrazit, kolik to je?
Jedná sa o direktívu post_max_size, môžeš to zistiť takto: echo ini_get("post_max_size"); btw: skús nabudúce dať radšej odkaz na kód skriptu, lebo je tu v tom ozaj bordel ;-) |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0