Avatar billede elskermad.dk Nybegynder
03. september 2004 - 22:23 Der er 9 kommentarer og
1 løsning

upload-script

hej eksperter :)

jeg har brug for et avanceret opload script og min hjerne er lige gået lidt i baglås hvad angår programmeringen af det!

jeg har denne form jeg oploader med:
<input type='file' name='billede' class='form_boks' style='width:350px'>

den skal tjekke for om filen der bliver oploaded opfylder følgende:
- filen skal være enten jpg, gif eller png! (ikke blot filendelsen, men også "det indvendige")
- tjekke for at filen ikke fylder mere end 30kb
- ikke er mindre end 100px i bredden og 60 i højden

derefter skal den gemme filen i denne mappe /grafik/vare/ med et unikt navn! time() + tilfældig genereret 4-cifret tal, plus filendelsen den havde da den blev oploaded! (fx: 151213151-2145.jpg)

den skal tjekke for om alle tingene er udførst korrekt, og hvis det ikke er tilfældet skal den "aborte" og poppe op med en javascript alertbox!


Håber der er en der kan få det til at lykkes bedre end mig... :)
- På forhånd mange tak
Avatar billede g1um Nybegynder
03. september 2004 - 22:29 #1
Jeg kan anbefale dig den her dejlig php tutorial, hvor mange af de funktioner som du har brug for er beskrivet: http://www.phpfreaks.com/tutorials/85/2.php og for at checke oploesning af grafiske filer kan du bruge den her  beskrivelse http://www.php.net/gd . Haber at det saetter dig pa den rette spor.
Avatar billede elskermad.dk Nybegynder
03. september 2004 - 22:34 #2
huha... det er sgu lidt for højt sprog til min PHP-viden! :/
jeg kan godt sætte pointsne op hvis det er det der skal til for at en vil lave en "skabelon" for mig?
Avatar billede g1um Nybegynder
03. september 2004 - 22:57 #3
elskermad.dk, jeg er sa traet til at lave det idag, der er ingen points der kan holde mig vagen. I morgen hvis der ikke nogen der laver et skabelon til dig, kan vi snakke igen. God nat :).
Avatar billede elskermad.dk Nybegynder
03. september 2004 - 22:58 #4
det lyder lækkert :)
nat nat...
Avatar billede sukos Juniormester
04. september 2004 - 09:17 #5
Så'n her?

<?php
session_start();

function alert() {
if(isset($_SESSION["besked"])) {
echo" onload=\"alert('". htmlentities($_SESSION["besked"]) ."');\"";
unset($_SESSION["besked"]);
}else{
echo"";
}
}

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

// min. bredde og højde (minimum???)
$minw = 100;
$minh = 60;

// Det dir som der skal uploades til, med skråstreger
$galleridir = "/images/";

// Fuld sti til galleridir
$moveto = $_SERVER["DOCUMENT_ROOT"] . $galleridir;

// Hvor sendes man hen efter upload?
$redir = $_SERVER["PHP_SELF"];

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
$filetype = array(1 => "gif", 2 => "jpg", 3 => "png");


    if($_FILES["upfile"]["error"] > 0) {
    $_SESSION["besked"] = strtr($_FILES["upfile"]["error"], $arg);
    header("Location:". $redir ."");
    exit();
    }

    if($_FILES["upfile"]["size"] > ($kb*1024)) {
    $_SESSION["besked"] = "Filen er for stor til upload!!!";
    header("Location:". $redir ."");
    exit();
    }

    if(false == ($str = getimagesize($_FILES["upfile"]["tmp_name"]))) {
    $_SESSION["besked"] = "Valgte fil til upload er ikke en billedfil!!!";
    header("Location:". $redir ."");
    exit();
    }

    if($str[2] > 3) {
    $_SESSION["besked"] = "Kun gif, jpg og png filer kan uploades!!!";
    header("Location:". $redir ."");
    exit();
    }

    if($str[0] < $minw) {
    $_SESSION["besked"] = "Billedet er under ". $minw ." px. i bredden!";
    header("Location:". $redir ."");
    exit();
    }

    if($str[1] < $minh) {
    $_SESSION["besked"] = "Billedet er under ". $minh ." px. i højden!";
    header("Location:". $redir ."");
    exit();
    }

    // FILNAVN UDEN FILTYPE
    $newname = time() ."_". rand(1000, 9999);

    // FILTYPEN
    $filtype = strtr($str[2], $filetype);

    $upname = $newname .".". $filtype;

    if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $moveto . $upname)) {
    $_SESSION["besked"] = "Billedet er blevet uploadet!";
    }else{
    $_SESSION["besked"] = "Billedet kunne desværre ikke flyttes!";
    }

    header("Location:". $redir ."");
    exit();

}
?>

<html><head><title>Billede upload</title>

</head>

<body<?php alert(); ?>>

<?php

if(!is_dir($moveto)) {
echo"Dir som fil skal flyttes til eksisterer ikke!!!";
}else{
?>
<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 name="upfile" type="file" size="32"><br>
<input type="submit" value="Upload">
</form>

<?php
}
?>

</body></html>
Avatar billede sukos Juniormester
04. september 2004 - 09:20 #6
Hov, $filtype bliver defineret to gange!
Selvom det evt. virker, vil jeg nu foretrække:

<?php
session_start();

function alert() {
if(isset($_SESSION["besked"])) {
echo" onload=\"alert('". htmlentities($_SESSION["besked"]) ."');\"";
unset($_SESSION["besked"]);
}else{
echo"";
}
}

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

// min. bredde og højde (minimum???)
$minw = 100;
$minh = 60;

// Det dir som der skal uploades til, med skråstreger
$galleridir = "/images/";

// Fuld sti til galleridir
$moveto = $_SERVER["DOCUMENT_ROOT"] . $galleridir;

// Hvor sendes man hen efter upload?
$redir = $_SERVER["PHP_SELF"];

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", 3 => "png");


    if($_FILES["upfile"]["error"] > 0) {
    $_SESSION["besked"] = strtr($_FILES["upfile"]["error"], $arg);
    header("Location:". $redir ."");
    exit();
    }

    if($_FILES["upfile"]["size"] > ($kb*1024)) {
    $_SESSION["besked"] = "Filen er for stor til upload!!!";
    header("Location:". $redir ."");
    exit();
    }

    if(false == ($str = getimagesize($_FILES["upfile"]["tmp_name"]))) {
    $_SESSION["besked"] = "Valgte fil til upload er ikke en billedfil!!!";
    header("Location:". $redir ."");
    exit();
    }

    if($str[2] > 3) {
    $_SESSION["besked"] = "Kun gif, jpg og png filer kan uploades!!!";
    header("Location:". $redir ."");
    exit();
    }

    if($str[0] < $minw) {
    $_SESSION["besked"] = "Billedet er under ". $minw ." px. i bredden!";
    header("Location:". $redir ."");
    exit();
    }

    if($str[1] < $minh) {
    $_SESSION["besked"] = "Billedet er under ". $minh ." px. i højden!";
    header("Location:". $redir ."");
    exit();
    }

    // FILNAVN UDEN FILTYPE
    $newname = time() ."_". rand(1000, 9999);

    // FILTYPEN
    $filtypen = strtr($str[2], $filetypes);

    $upname = $newname .".". $filtypen;

    if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $moveto . $upname)) {
    $_SESSION["besked"] = "Billedet er blevet uploadet!";
    }else{
    $_SESSION["besked"] = "Billedet kunne desværre ikke flyttes!";
    }

    header("Location:". $redir ."");
    exit();

}
?>

<html><head><title>Billede upload</title>

</head>

<body<?php alert(); ?>>

<?php

if(!is_dir($moveto)) {
echo"Dir som fil skal flyttes til eksisterer ikke!!!";
}else{
?>
<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 name="upfile" type="file" size="32"><br>
<input type="submit" value="Upload">
</form>

<?php
}
?>

</body></html>
Avatar billede elskermad.dk Nybegynder
04. september 2004 - 10:59 #7
det er godt nok stadig lidt over min evne, men kigger lige på det og vender tilbage hvis jeg ikke kan få det til at virke :)
Avatar billede elskermad.dk Nybegynder
04. september 2004 - 11:25 #8
jeg har tilrettet det således det burde passe til mig (og så jeg selv ved hvad der sker, men har et problem med at den allerede falder i min første validering :(

min kode er som følger:
-------------------------------------------------------------------
<?
    $minw         = 50;
    $minh         = 50;
    $kb         = 30;
    $byte         = $kb*1024;
   
    if ($_FILES[billede][size] > 0) {
        $unikname     = 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 ($_FILES["billede"]["error"] == 0) {
            if (false == ($str = getimagesize($_FILES["billede"]["tmp_name"]))) {
                if ($str[2] <= 3) {
                    if ($_FILES["billede"]["size"] <= ($kb*1024)) {
                        if ($str[0] >= $minw) {
                            if ($str[1] >= $minh) {
                                // mulige filendelser
                                $filetypes     = array(1 => "gif", 2 => "jpg", 3 => "png");
                                // filtype
                                $filtypen     = strtr($str[2], $filetypes);
                                // filnavn
                                $upname     = $newname .".". $filtypen;
                                // stier
                                $fra         = $_FILES[billede][tmp_name];
                                $til         = "/grafik/vare/" . $upname;
                               
                                if (move_uploaded_file($_FILES["billede"]["tmp_name"], $til)) {
                                   
                                }
                                else {
                                    $fejl = "Billedet kunne ikke oploaded... Prøv igen!";
                                }
                            }
                            else {
                                $fejl = "Billedet var for lavt!";
                            }
                        }
                        else {
                            $fejl = "Billedet var for smalt!";
                        }
                    }
                    else {
                        $fejl = "Filen var for stor til opload...";
                    }
                }
                else {
                    $fejl = "Kun jpg, gif og png billedefiler kan oploades!";
                }
            }
            else {
                $fejl = "Filtypen var ikke gyldig!";
            }
        }
        else {
            $fejl = strtr($_FILES["billede"]["error"], $arg);
        }
    }
   
    echo"
    <html>
    <head>
    <title>Billedadministrator</title>
    <link rel='stylesheet' href='/style.css' type='text/css'>
    <style type='text/css'>
        body {
            background-color:#FFFFFF
        }
    </style>
    <script language='javascript' type='text/javascript'>
        function doit() {
    ";
   
    if (isset($fejl)) {
        echo"
            alert('$fejl')
        ";
    }
   
    echo"
        }
    </script>
    </head>
    <body onLoad='doit()'>
    <form name='billedopload' method='post' action='?mode=upload' enctype='multipart/form-data'>
    <input type='file' name='billede' class='form_boks' style='width:282px'>
    <input type='submit' name='submit' class='form_knap' value='opload billede'>
    <input type='hidden' name='MAX_FILE_SIZE' value='$byte'>
    </form>
    </body>
    </html>
    ";
?>
Avatar billede elskermad.dk Nybegynder
04. september 2004 - 11:33 #9
hehe jeg var vist for hurtigt ude... det lader til at virke nu! skulle lige ændre end false til true og lidt andet småting så virkede det!
jeg siger mange tak, lægger du et svar? :D
Avatar billede sukos Juniormester
04. september 2004 - 15:23 #10
Jow da! :O)
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