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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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