Avatar billede elskermad.dk Nybegynder
23. december 2004 - 16:26 Der er 3 kommentarer og
1 løsning

opload-funktion vil ikke?

hej eksperter!

jeg har lavet en - synes jeg selv ret smart - upload funktion jeg kan bruge mange forskellige steder på mine sider!

problemet er at den ikke rigtig vil hvad jeg har tænkt mig den skal, nemlig at uploade nogle billede :S

funktionen ser således ud:
-----------------------------------------------------------------

function uploadimage($source, $type = "produkt", $navn = "", $beskrivelse = "", $maxsize = 1024) {
    global $sys;
    global $ip;
    global $phptime;
   
    $felt = $_FILES[$source];
   
    if ($felt["size"] > 0) {
        $kb         = $maxsize;
        $byte        = $kb*1024;
           
        $unikname     = $sys[shopid] . "-" . time() . "-" . rand(1000, 9999);
        $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!");
           
        if ($felt["error"] == 0) {
            if (true == ($str = getimagesize($felt["tmp_name"]))) {
                if ($str[2] <= 3) {
                    if ($felt["size"] <= $byte) {
                        // mulige filendelser
                        $filetypes     = array(1 => "gif", 2 => "jpg", 3 => "png");
                       
                        // filtype
                        $filtypen     = strtr($str[2], $filetypes);
                       
                        // filnavn
                        $upname     = $unikname .".". $filtypen;
                       
                        // stier
                        $fra         = $felt["tmp_name"];
                       
                        $til         = "../../grafik/image/" . $upname;
                        $thumb        = "../../grafik/image/thumb/" . $upname;
                       
                        // størrelsesforhold
                        $forhold = $str[1]/$str[0];
                        $nyhojde = 150*$forhold;
                       
                        if (move_uploaded_file($felt["tmp_name"], $til)) {
                            // lave thumbs
                            if ($filtypen == "jpg") {
                                Header("Content-type: image/jpeg");
                                $src_img = imagecreatefromjpeg($til);
                                $thumbnail = imagecreatetruecolor(150,$nyhojde); // width, height
                                imagecopyresized($thumbnail,$src_img,0,0,0,0,150,$nyhojde,$str[0],$str[1]);
                                imagejpeg($thumbnail,$thumb,50);
                            }
                            elseif ($filtypen == "png") {
                                Header("Content-type: image/png");
                                $src_img = imagecreatefrompng($til);
                                $thumbnail = imagecreatetruecolor(150,$nyhojde); // width, height
                                imagecopyresized($thumbnail,$src_img,0,0,0,0,150,$nyhojde,$str[0],$str[1]);
                                imagepng($thumbnail,$thumb,50);
                            }
                            elseif ($filtypen == "gif") {
                                Header("Content-type: image/png");
                                $src_img = imagecreatefromgif($til);
                                $thumbnail = imagecreatetruecolor(150,$nyhojde); // width, height
                                imagecopyresized($thumbnail,$src_img,0,0,0,0,150,$nyhojde,$str[0],$str[1]);
                                imagepng($thumbnail,$thumb,50);
                            }
                           
                            $thumbsize        = getimagesize($thumb);
                           
                            $size            = filesize($til);
                            $size_thumb     = filesize($thumb);
                           
                            $height            = $str[0];
                            $height_thumb    = $thumbsize[0];
                            $width            = $str[1];
                            $width_thumb    = $thumbsize[1];
                           
                            mysql_query("insert into webshop_upload_image (shop,type,url,size,size_thumb,width,width_thumb,height,height_thumb,tidspunkt,ip,navn,beskrivelse,nummer) values ('$sys[shopid]','$type','$upname','$size','$size_thumb','$width','$width_thumb','$height','$height_thumb','$phptime','$ip','$navn','$beskrivelse','0')") or die(mysql_error());
                           
                            $foresp = mysql_query("SELECT * FROM webshop_upload_image WHERE url = '$upname'") or die(mysql_error());
                            while($row = mysql_fetch_array($foresp)) {
                                $id = $row["id"];
                            }
                        }
                        else {
                            $fejl = "Billedet kunne ikke oploades... Prøv igen!";
                        }
                    }
                    else {
                        $fejl = "Filen var for stor til opload...";
                    }
                }
                else {
                    $fejl = "Kun jpg, gif og png billedefiler kan oploades!";
                }
            }
            else {
                $fejl = "Filen du oploadede er ikke et billede!";
            }
        }
        else {
            $fejl = strtr($felt["error"], $arg);
        }
    }
   
    if (!isset($fejl) && isset($id)) {
        $return = $id;
    }
    else {
        $return = $fejl;
    }
   
    return $return;
}

-----------------------------------------------------------------

$source er navnet på det felt hvor jeg vælger billedet jeg vil oploade, kunne fx se således ud:
-----------------------------------------------------------------

<input type='file' name='billede_opl' class='form_boks' style='width:350px' value=''>

-----------------------------------------------------------------

og jeg henter id'et billedet bliver sat ind i db'en eller evt. fejl ved at returne til sidst i funktionen...

derfor burde jeg kunne bruge dette php til at se om der er fejl, eller om den er oprettet, men jeg kan ikke få det til at virke! :(

koden:
-----------------------------------------------------------------

if ($_POST['billede_metode'] == "imgmethod2") {
    if ($_FILES['billede_opl']['size']) {
        $billede = uploadimage("billede_opl");
           
        if (!is_numeric($billede)) {
            $fail = $billede;
        }
    }
    else {
        $fail = "Intet billede blev valgt!";
    }
}

-----------------------------------------------------------------

den hopper i den sidste fejl hver gang, så det ser ud til at $_FILES['billede_opl']['size'] ikke bliver sat, selvom jeg vælger en fil at oploade!

nogen der kan hjælpe mig med at få det til at virke? det generer mig virkelig, og har andet sjovt at lave her i julen ;)

på forhånd mange tak!
Avatar billede morteeart Nybegynder
23. december 2004 - 16:47 #1
Har du husket enctype="multipart/form-data" i din <form> ?
Avatar billede elskermad.dk Nybegynder
23. december 2004 - 16:51 #2
nope det havde jeg ikke ;) træls fejl sgu! hehe... men mange tak smid et svar :D

du må have en rigtig glædelig jul og tak igen...
Avatar billede morteeart Nybegynder
23. december 2004 - 16:58 #3
næ, du kan selv tage point.

Det er jo jul :)

Og God jul til dig også.
Avatar billede elskermad.dk Nybegynder
23. december 2004 - 17:00 #4
:)
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