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!
