Avatar billede jenskromann Nybegynder
20. november 2006 - 15:44 Der er 7 kommentarer

Billedupload fungere ikke rigtigt.

Hej.. Jeg har lavet/fået skaffet og redigeret et "upload-profilbilled" system.

Men problemet er, at når jeg uploader, så lægger den kun billedet ind i mappen, efter jeg har prøvet hver 10 gang.

Den skulle gerne ligge direkte i mappen med det samme - men det gør den ikke, hvorfor? - er der nogle fejl?

<?php
$rand = mt_rand();

    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 );
    }


// ca. Kb må billedet fylde
$kb = 210;

// max. bredde og højde
$maxw = 400;
$maxh = 300;

// Det dir som der skal uploades til, med skråstreger
$galleridir = realpath("hhh/");

// Fuld sti til galleridir
$moveto = $galleridir;

// Hvor sendes man hen efter upload?
$redir = "lol";

if (isset($_FILES["upfile"])) {

// Array med fejlbeskeder sat med $_FILES["upfile"]["error"]
$arg = array(1 => "Filen er større end tilladt upload i php.ini", 2 => "Filen er større end ". round(($kb*1024)/1000) ." Kb", 3 => "Sorry, men kun en del af filen blev uploadet", 4 => "Vælg en fil til upload!");

// Array med filtyper, til brug for det endelige filnavn
$filetypes = array(1 => "gif", 2 => "jpg");


    if($_FILES["upfile"]["error"] > 0) {
    $_SESSION["besked"] = strtr($_FILES["upfile"]["error"], $arg);
    die($_SESSION['besked']);
    }

    if($_FILES["upfile"]["size"] > ($kb*1024)) {
    $_SESSION["besked"] = "Filen er for stor til upload!!!";
    die($_SESSION['besked']);
    }

    if(false == ($str = getimagesize($_FILES["upfile"]["tmp_name"]))) {
    $_SESSION["besked"] = "Valgte fil til upload er ikke en billedfil!";
    die($_SESSION['besked']);
    }

    if($str[2] > 2) {
    $_SESSION["besked"] = "Kun *.gif og *.jpg filer kan uploades!";
    die($_SESSION['besked']);
    }

    if($str[0] > $maxw) {
    $_SESSION["besked"] = "Billedet er større end ". $maxw ." pixels i bredde!";
    die($_SESSION['besked']);
    }

    if($str[1] > $maxh) {
    $_SESSION["besked"] = "Billedet er større end ". $maxh ." pixels i højde!";
    die($_SESSION['besked']);
    }

    // FILTYPEN
    $filtypen = strtr($str[2], $filetypes);
   
    (String) $upname = "" . $_POST['navn'] . "";
    (String) $navn = "" . $upname . "." . $filtypen . "";

    if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $moveto . $navn)) {
    $_SESSION["besked"] = "Billedet er blevet uploadet!";
    resize( $navn, $upname . "Thumb.jpg", 100, 100 );
    echo "Navn:" . $navn . "<br />BIL:" . $upname. ""; header("Location: " . $_SERVER["PHP_SELF"]);
    }else{
    $_SESSION["besked"] = "Billedet kunne desværre ikke flyttes!";
    }


}



?>

<body>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo($kb*1024); ?>">
<input type="hidden" name="navn" value="<?php echo time() . mt_rand() . "NAVN";?>">
<input name="upfile" type="file" size="32"><br>
<input type="submit" value="Upload">
</form>
Avatar billede kimg Nybegynder
20. november 2006 - 16:24 #1
Har rettet lidt i den, det virker fint nu
Du skal lige rette $galleriDir til din mappe, og thumbDir til din mappe med thumbs
du skal kun ændre på den del hvor der står test1 og test2
Kim

<?php
ob_start();
session_start();
$rand = mt_rand();

    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 );
    }


// ca. Kb må billedet fylde
$kb = 210;

// max. bredde og højde
$maxw = 400;
$maxh = 300;

// Det dir som der skal uploades til, med skråstreger
$galleriDir = $_SERVER["DOCUMENT_ROOT"]."/test2/";
$thumbDir = $_SERVER["DOCUMENT_ROOT"]."/test1/";

// Fuld sti til galleridir
$moveto = $galleriDir;

// Hvor sendes man hen efter upload?
$redir = "lol";

if (isset($_FILES["upfile"])) {

// Array med fejlbeskeder sat med $_FILES["upfile"]["error"]
$arg = array(1 => "Filen er større end tilladt upload i php.ini", 2 => "Filen er større end ". round(($kb*1024)/1000) ." Kb", 3 => "Sorry, men kun en del af filen blev uploadet", 4 => "Vælg en fil til upload!");

// Array med filtyper, til brug for det endelige filnavn
$filetypes = array(1 => "gif", 2 => "jpg");


    if($_FILES["upfile"]["error"] > 0) {
    $_SESSION["besked"] = strtr($_FILES["upfile"]["error"], $arg);
    die($_SESSION['besked']);
    }

    if($_FILES["upfile"]["size"] > ($kb*1024)) {
    $_SESSION["besked"] = "Filen er for stor til upload!!!";
    die($_SESSION['besked']);
    }

    if(false == ($str = getimagesize($_FILES["upfile"]["tmp_name"]))) {
    $_SESSION["besked"] = "Valgte fil til upload er ikke en billedfil!";
    die($_SESSION['besked']);
    }

    if($str[2] > 2) {
    $_SESSION["besked"] = "Kun *.gif og *.jpg filer kan uploades!";
    die($_SESSION['besked']);
    }

    if($str[0] > $maxw) {
    $_SESSION["besked"] = "Billedet er større end ". $maxw ." pixels i bredde!";
    die($_SESSION['besked']);
    }

    if($str[1] > $maxh) {
    $_SESSION["besked"] = "Billedet er større end ". $maxh ." pixels i højde!";
    die($_SESSION['besked']);
    }

    // FILTYPEN
    $filtypen = strtr($str[2], $filetypes);
   
    $upname = "" . $_POST['navn'] . "";
    $navn = "" . $upname . "." . $filtypen . "";

    if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $moveto . $navn)) {
    $_SESSION["besked"] = "Billedet er blevet uploadet!";
    resize( $galleriDir.$navn, $thumbDir.$upname . "Thumb.jpg", 100, 100 );
    echo "Navn:" . $navn . "<br />BIL:" . $upname. ""; header("Location: " . $_SERVER["PHP_SELF"]);
    }else{
    $_SESSION["besked"] = "Billedet kunne desværre ikke flyttes!";
    }


}



?>

<body>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo($kb*1024); ?>">
<input type="hidden" name="navn" value="<?php echo time() . mt_rand() . "NAVN";?>">
<input name="upfile" type="file" size="32"><br>
<input type="submit" value="Upload">
</form>
<?PHP
ob_end_flush();
?>
Avatar billede jenskromann Nybegynder
20. november 2006 - 22:20 #2
Virker desværre stadig ikke.. Desuden skal den uploade til samme mappe som filen ligger i. Men det gør den ikke!
Avatar billede kimg Nybegynder
20. november 2006 - 22:37 #3
så retter du bare til samme mappe, og jeg har testet det, det virker

Kim
Avatar billede jenskromann Nybegynder
21. november 2006 - 00:36 #4
Ja, det kan jeg godt regne ud.. Men det virker stadig ikke. Den uploader ikke.. Desuden hvad har du overhovedet ændret i filen?
Avatar billede kimg Nybegynder
21. november 2006 - 08:12 #5
Her er et link, så kan du se det virker, hvis du ikke ændrer noget i filen.
http://www.kimg.dk/test.php
Får du nogen fejlmelding?
Hvad virker ikke?
Avatar billede webmus Nybegynder
21. november 2006 - 09:00 #6
Det er Meget lettere at lave i mysql:)

Skriv li hvis du er interesseret så ska jeg poste noget kode:)
Avatar billede jenskromann Nybegynder
21. november 2006 - 11:59 #7
kører mit script over localhost.. kan det mon være derfor?
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