Avatar billede mibu Nybegynder
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>
Avatar billede steen-h Mester
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")
Avatar billede steen-h Mester
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");
Avatar billede steen-h Mester
11. oktober 2007 - 16:43 #3
Der var lige en ) for meget.

$uploadfile = $uploadDir . "forside.jpg";
Avatar billede mibu Nybegynder
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!
Avatar billede mibu Nybegynder
11. oktober 2007 - 17:00 #5
Det er denne her linie der udløser fejlmelding.

if(!resize( $_FILES['userFile']['tmp_name'], $uploadfile, $maxWidth, $maxHeight ))
Avatar billede steen-h Mester
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.
Avatar billede mibu Nybegynder
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?
Avatar billede steen-h Mester
11. oktober 2007 - 17:34 #8
Hvis dit script virkede før bruger du functionen nu.
Avatar billede mibu Nybegynder
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 :-)
Avatar billede mibu Nybegynder
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!
Avatar billede steen-h Mester
11. oktober 2007 - 17:59 #11
Selv tak, men behold bare point selv.
Avatar billede mibu Nybegynder
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>
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester