27. maj 2006 - 22:20Der er
20 kommentarer og 1 løsning
Problemer med upload af billede?
Hej eksperter.
Jeg har nedenstående kode som gør det muligt at uploade et billede til en annonce. Men jeg har pludselig opdaget at der åbenbart er visse typer formater som ikke kan uploades, altså billeder med for store dimensioner fx, 2500x2800 (bare et exempel) selv om billedet ikke fylder over den tilladte grænse. Nedenstående vises min kode.. Hvordan løses dette?
Jeg tror 2500x2500 bruger for meget hukommelse. Hvad du du i memory_limit ? Ellers må du give dine brguere besked på at billedet max må være 1024x768 eller 1mb eller noget. Ellers skal du have rettet memory_limit, så du må bruge mere hukommelse.
ok.. det er bare lidt mystisk.. jeg kan fx godt uploade et billede som fylder ca 2 megabytes, hvis bare formatet er under en vis grænse:~).. problemet kommer kun når selve formatet er meget stort..
Ja, og det er netop problemet. Koden fejler i dette kald: $srcim = imagecreatefromjpeg( $filename ); Og den eneste løsning jeg selv har fundet er at sætte memory_limit() op. Kunne ikke få den til at smide en fejl på anden måde. Enten skal man så teste size før man gør yderligere.
16M = 16 MB Du kan så evt. se hvad den er nu, via: phpinfo() og så sætte den noget over det. Men det er ikke sikkert det virker. (det burde det ikke, hvis B-One har sikret deres webhoteller)
Du kunne f.eks. sammen med koden: if($_FILES['imagefile']['size'][$i] > 2048000) Lave et tjek ala: $size = getimagesize($_FILES['imagefile']['name'][$i]); if($size[1] > 1000) echo "Height above 1000, error"; if($size[2] > 1000) echo "Width above 1000, error";
skal det så se sådan ud: $allowPics = array("jpg","jpeg","jpe","JPG","JPEG","JPE");
if(mysql_affected_rows()>0) { $errmsg = ""; $artikelID = mysql_insert_id(); for($i = 1; $i <= 1; $i++) { if($_FILES['imagefile']['size'][$i] > 2048000) { echo " <script type=\"text/javascript\"> alert(\"Dit billede var for stort, og kunne \nderfor ikke komme med i annoncen!\"); </script>"; } else if( if($size[1] > 1000) echo "Height above 1000, error"; if($size[2] > 1000) echo "Width above 1000, error";) { echo " <script type=\"text/javascript\"> alert(\"Dit billede var for stort, og kunne \nderfor ikke komme med i annoncen!\"); </script>"; }
Du burde kunne nøjes med et billede tjek i stil med:
$imageSize = getimagesize($_FILES['imagefile']['tmp_name'][$i]); if($_FILES['imagefile']['size'][$i] > 2048000 || ($imageSize[1]>1000 || $imageSize[2]>1000)) { echo " <script type=\"text/javascript\"> alert(\"Dit billede var for stort, og kunne \nderfor ikke komme med i annoncen!\"); </script>"; }
Er der ikke en mulighed for at resize billede før man sender det videre, så man ikke er begrænset af fil størrelse?? Måske et dumt spørgsmål, men jeg har det samme problem og det må da kunne lade sig gøre!
Du kan godt resize billede på din computer inden du uploader billedet. Men ellers skal billedet jo først op til serveren, så kan det resizes og efterfølgende gemmes.
he he, jeg fik vist formuleret mig lidt forkert. Jeg er godt klar over at man resize på sin computer, men hvis jeg nu laver en siden til en som ikke har mulighed for det eller simplthen ikke kan finde ud af det. Så ville det jo være lækkert hvis de bare kunne tage deres .jpg og smide det afsted ud at skulle bekymre sig om at resize.
Det jeg mente var at man i scriptet kunne få resize til at ske som det første, men det er vist også det som der står i scriptet, så et dumt spørgsmål. :)
Jeg tænkte at det må da bare være muligt at lave et script som er fuldstændig ligeglad med størrelse og fil type??
ok, men jeg kan bare ikke få det til at virke, med det script jeg har (tro faktisk at du har hjulpet mig med at skrive et :) ), det ligner meget det oven for men med nogle små ændringer.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.