02. januar 2005 - 23:00
Der er
9 kommentarer og 1 løsning
Upload problem
Har følgende script og der sker intet når man prøver at uploade, hvad kan fejlen være?? <html> <head> <LINK HREF="styles/style1.css" Rel=stylesheet> </head> <body> <?php $extlimit = "ja"; $limitedext = array(".jpg",".jpeg"); $sizelimit = "ja"; $sizebytes = "15000"; $sti = "srv/www/htdocs/web1/html/gu-game/"; $absolute_path = $sti."profilbillede"; $idea= "1"; if($submit=="Upload"){ $dir = "dir"; if ($file != "") { $ext=strrchr($file_name,'.'); $ext=strtolower($ext); if (file_exists($absolute_path."/".$id."".$ext)) { die("The picture allready exsist"); } if (($sizelimit == "ja") && ($file_size > $sizebytes)) { die("The picture is too large. Maximum = 15 kb."); } if (($extlimit == "ja") && (!in_array($ext,$limitedext))) { die("Wrong filetype, only jpg and jpeg is avalible atm"); } @copy($file, $absolute_path."/".$idea."".$ext) or die("The file couldn't be copyed to the server ".$absolute_path."/".$idea."".$ext); #-+ Read the source image $src_img = ImageCreateFromJPEG($absolute_path."/".$idea."".$ext); #Vælg bredden $tn_w = "80"; #Hent billedets bredde og højde $imginfo = getimagesize($absolute_path."/".$idea."".$ext); $org_w= $imginfo[0]; $org_h = $imginfo[1]; #Beregn højden i forhold til bredden $tn_h = "40"; #Sæt det nye billede $dst_img = imagecreatetruecolor($tn_w,$tn_h); #Ændre det! ImageCopyResized($dst_img, $src_img, 0, 0, 0, 0, $tn_w, $tn_h, $org_w, $org_h); #Gem det! ImageJPEG($dst_img, $absolute_path."/".$idea."".$ext, "95"); #slet "midlertidige" filer fra serveren. imagedestroy($dst_img); } else { print "try again"; } echo "<p />"; echo $file_name." was uploaded"; } ?> <form method=POST action="avatarupload.php" enctype=multipart/form-data> <p>Choose a picture:<br> <input type=file name=file size=30> <p><button name=submit type=submit value=Upload> Upload </button> </form> </body> </html>
Annonceindlæg fra Computerworld
02. januar 2005 - 23:30
#1
Måske if($_POST['submit']=="Upload"){ det er ikke verdens nyeste uploadscript, du har gravet frem der. Du bør fx også benytte move_uploaded_file
03. januar 2005 - 09:56
#2
nej men det er meget simpelt det jeg skal bruge det til. Nu ryger den ned til fejlen "try again" } else { print "try again"; Det er da ret underligt kan da ikke se at der er noget galt med formen.
03. januar 2005 - 10:00
#3
Jo, men det et jo nok for gammelt alligevel. Det ser ud til du skal hele vejen rundt og erstatte alle forekomster af $variabelnavn med $_POST[...noget...] eller $_FIlES[...noget...] fordi du nu anvender en moderne installation af PHP, og scriptet er skrevet til en stenalderversion af PHP. Men det er da en vej frem.... hvis du absolut vil.
03. januar 2005 - 10:04
#4
Hvordan kan jeg evt. rettet det til så det bliver "nyere" :)
03. januar 2005 - 11:29
#6
okay nu har jeg prøvet et andet: <? function imageresize($sourcefile,$maxwidth,$maxheight,$destinationfile=false) { $types=Array(); $types[1]='gif'; $types[2]='jpeg'; $types[3]='png'; $types[6]='wbmp'; list($width,$height,$type)=getimagesize($sourcefile); $type_name=$types[$type]; $imagecreatefromtype='imagecreatefrom'.$type_name; $imagetype='image'.$type_name; if(!function_exists($imagecreatefromtype) || !function_exists($imagetype)) { return false; } if($img_src=$imagecreatefromtype($sourcefile)) { $ratio_height=$maxheight/$height; $ratio_width=$maxwidth/$width; $ratio=min($ratio_width,$ratio_height); $newwidth=$width*$ratio; $newheight=$height*$ratio; // $img_dst=imagecreatetruecolor($newwidth,$newheight); $img_dst=imagecreate($newwidth,$newheight); // imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); if($destinationfile==false) { //header("Content-type: image/jpeg"); $imagetype($img_dst); } else $imagetype($img_dst,$destinationfile); imagedestroy($img_dst); return true; } else { return false; } } //Her skal filen flyttes fra $fra= $_FILES['fil']['tmp_name']; //Hvilken type fil arbejder vi med? $ext= strtolower(end(explode(".", $_FILES['fil']['name']))); //Hvis filen er et jpg, jpeg eller gif billede if($ext == "jpg" || $ext == "jpeg" || $ext == "gif") { $tid= time(); $billedeid=1; //Her giver vi billedet et andet navn, så der ikke kommer to ens navne… $nytNavn = $billedeid.$ext; //Her er vores destination $til= "../upload/billeder/large/" . $nytNavn; //Her sker det magiske: move_uploaded_file($fra, $til); //Her resizer vi billedet med Xyborx’s funktion $newSizeWidth= 75; $newSizeHeight= 75; $newSizeDes= "../upload/billeder/small/" . $nytNavn; imageresize($til, $newSizeWidth, $newSizeHeight, "../upload/billeder/small/" . $nytNavn); //Her ligges oplysningerne ind databasen – huske at connecte til den! } header("Location: billeder.php"); ?> Men mine filer kommer til at ligge som underligtjpg der skulle have været et punktum så den kan ses some jpg fil. Og desuden har jeg da givet den id = 1 så billedet skulle have været gemt som 1.jpg
03. januar 2005 - 11:38
#7
$nytNavn = "$billedeid.$ext";
03. januar 2005 - 16:43
#8
takker :) - problemet er løst - læg svar
03. januar 2005 - 19:02
#9
Ingen point til mig, tak. Jeg samler ikke på dem.
03. januar 2005 - 22:24
#10
okay tak
Vi tilbyder markedets bedste kurser inden for webudvikling