11. oktober 2007 - 16:04
Der er
11 kommentarer og 1 løsning
Omdøb ved upload
Kan man tilpasse denne kode så den omdøber uploadfilen til et fast navn, f.eks forside.jpg ? Kode. <?php function resize( $filename, $newfilename, $maxw, $maxh ) { $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $oh; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $ow * $scale, 0 ); $nh = round( $oh * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); } $uploadDir = "images/side/"; //Husk mappen skal chmod'es til 644 $maxHeight = 250; $maxWidth = 250; $maxSize = 0.5; //Angives i MB $pics = array('jpg','JPG'); //Hvilke filtyper vil vi godtage? $maxSize = $maxSize * 1024 * 1024; if($_FILES['userFile']['size'] > 0) { $uploadfile = $uploadDir . basename($_FILES['userFile']['name']); if($_FILES['userFile']['size'] > $maxSize) { echo "Dit billede er for stort, prøv med mindre..."; exit(); } $ext = strtolower(end(explode('.',$_FILES['userFile']['name']))); if(!in_array($ext,$pics)) { echo "Forkert billede format, prøv med et andet..."; exit(); } if(!resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight )) { echo "Det fejlede at resize billedet : " . $uploadfile . "! Prøv igen<br />"; } //else //{ // header("location: " . $_SERVER['PHP_SELF']); //exit(); //} } ?> <center> <table> <tr><td><label>Skift billede på forside:</label></td></tr> <form enctype="multipart/form-data" action="/admin/admin_menu.php?side=fotoforside" method="post"> <td><input name="userFile" type="file" /></td></tr> <td><input type="submit" value="Gem" /></td> </form> </tr> </table> </center>
Annonceindlæg tema
11. oktober 2007 - 16:32
#1
Hej
Det er functionen til resize du viser, du skal have fat i move_uploaded_file ( string $filename, string $destination )
se
http://dk.php.net/manual/en/function.move-uploaded-file.php Den sidste variabel er den som giver navnet, her kan du skrive "forside.jpg"
move_uploaded_file ( string $filename, "forside.jpg")
11. oktober 2007 - 16:42
#2
Der var jeg lige lidt for hurtig, men det må være nok at rettet følgende $uploadfile = $uploadDir . basename($_FILES['userFile']['name']); med $uploadfile = $uploadDir . "forside.jpg");
11. oktober 2007 - 16:43
#3
Der var lige en ) for meget. $uploadfile = $uploadDir . "forside.jpg";
11. oktober 2007 - 16:57
#4
Ok testet: Den brokker over linie 16 = imagejpeg( $dstim, $newfilename, 85 ); Fjerner jeg $newfilename holder den op med at brokke :-) men fejler at uploade!
11. oktober 2007 - 17:00
#5
Det er denne her linie der udløser fejlmelding. if(!resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight ))
11. oktober 2007 - 17:23
#6
Ja, det er mig som ikke var helt vågen. Du bruger $uploadfile i din resize function, så det er ikke der du skal rette. Du skal have fat i move_uploaded_file , det functionen gør er at flytte filen fra temp hvor serveren arbejder med filen og over hvor du vil gemme den.
11. oktober 2007 - 17:32
#7
Okay! jeg er ikke så skide skrap, har også været på manualen, før jeg prøvede her. Har du et forslag til hvor og hvordan jeg fletter den ind?
11. oktober 2007 - 17:34
#8
Hvis dit script virkede før bruger du functionen nu.
11. oktober 2007 - 17:47
#9
Mit script virker men gemmer jo med samme navn som originalfilen. Jeg har prøvet at indsætte din : move_uploaded_file ( string $filename, "forside.jpg") men åbenbart ikke det rigtige sted :-)
11. oktober 2007 - 17:50
#10
Stop!! Nu er det mig der er for hurtig :-) Nu virker den! Nu skal bare lige regne ud hvad jeg gjorde :-) Takker. Skynd dig at sende et svar!
11. oktober 2007 - 17:59
#11
Selv tak, men behold bare point selv.
11. oktober 2007 - 18:02
#12
Takker :-) Og til andre, der kan bruge den, ser det sådan her ud: <?php function resize( $filename, $newfilename, $maxw, $maxh ) { $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $oh; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $ow * $scale, 0 ); $nh = round( $oh * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); } $uploadDir = "images/side/"; //Husk mappen skal chmod'es til 644 $maxHeight = 250; $maxWidth = 250; $maxSize = 0.5; //Angives i MB $pics = array('jpg','JPG'); //Hvilke filtyper vil vi godtage? $maxSize = $maxSize * 1024 * 1024; if($_FILES['userFile']['size'] > 0) { $uploadfile = $uploadDir . "forside.jpg"; if($_FILES['userFile']['size'] > $maxSize) { echo "<center>Dit billede er for stort, prøv med mindre...</center>"; exit(); } $ext = strtolower(end(explode('.',$_FILES['userFile']['name']))); if(!in_array($ext,$pics)) { echo "<center>Forkert billede format, prøv med et andet...</center>"; exit(); } if(!resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight )) { echo "<center>Det fejlede at resize billedet : " . $uploadfile . "! Prøv igen<br /></center>"; } } ?> <center> <table> <tr><td><label>Vælg billede til forside:</label></td></tr> <form enctype="multipart/form-data" action="/admin/admin_menu.php?side=fotoforside" method="post"> <td><input name="userFile" type="file" /></td></tr> <td><input type="submit" value="Gem" /></td> </form> </tr> </table> </center>
Vi tilbyder markedets bedste kurser inden for webudvikling