Avatar billede mr-xmas Nybegynder
13. oktober 2007 - 14:52 Der er 10 kommentarer

Onload i en filefelt

Hejsa

hvordan kan man lave så når man finder et billede man vil upload i sådan en file felt .
så den viser billedet i en lille udgave ved siden af inden man uploader :)

håber i kan hjælpe
Avatar billede showsource Seniormester
17. oktober 2007 - 09:09 #1
Du kan prøve dette

<?php
// SETTINGS ///////////////////////////////////////////////////////////////////////////////////////

    // Definerer stien til uploaddir
    $dist = $_SERVER["DOCUMENT_ROOT"] ."/upload/";

    // bruges til at linke til uploadet fil. Her ligger dir i roden af domain
    // Hvis $up_link er tom, laves der ikke noget link til fil efter upload
    $up_link = "/upload/";

    // Navn og sti til denne fil. Bruges til redirect efter upload og som action i formularen
    // Her ligger filen i roden af domain
    $file_name = "/multi_upload.php";

    // Skal der kun uploades billeder? true/false
    $only_images = false;

    // tilladte filtyper, bruges hvis $only_images = true
    // arrayet er sammensat ud fra hvad getimagesize() returnerer
    // ønskes f.eks. swf og wbmp filer tilføjet, skal 4 => "swf" og 15 => "wbmp" med i array'et $filtyper
    // Array'et bruges også til navngivning af filen
    // Og array'et bruges også i javascript til preview filen ( Kun IE )
    $filtyper = array(1 => "gif", 2 => "jpg", 3 => "png");

    // max kb pr. fil ved upload, hvis sat til 0 er der ingen begrænsning
    // Husk serveropsætning også sætter begrænsninger. Normalt 2 Mb for upload og 8Mb for post
    $max_kb = 0;

    // Default antal viste uploadfelter
    $default_fields = 5;


    // Med $_FILES["upfile"]["type"] kan man få hvilken mimetype uploadet fil er.
    // Men den er IKKE 100% sikker, ( browserbestemt ), så derfor bruges det ikke i dette script
    // Derimod tjekkes på filendelsen, hvilke filtyper som kan uploades
    // Hvis arrayet herunder er tomt, ( eller udkommenteres ), uploades alle typer ( medmindre selvf. $only_images er sat til true )
    // HUSK at kun bruge små bogstaver, da filnavnet bliver til lowercase ved upload
    $upload_types = array("gif", "jpg", "jpeg", "png", "pdf", "txt", "html", "htm", "doc");

// END SETTINGS ///////////////////////////////////////////////////////////////////////////////////


  //// HERFRA OG NED BEHØVER DU IKKE ÆNDRE ////


    // Tjekker diverse... ///////////////////////////////////////

    $ver = phpversion();
    // Ok version af PHP ???
    if($ver < 4.2) {
        echo "Scriptet kan kun bruges fra PHP ver. 4.2 og op";
        exit;
    }

    // Er upload tilladt ???
    if(false == ini_get('file_uploads')) {
        echo "Upload af filer er ikke tilladt i php.ini!";
        exit;
    }

    // Er $file_name defineret korrekt ???
    if($_SERVER["PHP_SELF"] != $file_name) {
        echo "\$file_name er forkert defineret!";
        exit;
    }

    // Findes dir til upload ???
    if(!is_dir($dist)) {
        echo "Dir til upload findes ikke!";
        exit;
    }

    if(!is_writable($dist)) {
        echo "Der er ikke skriverettigheder p&aring; uploaddir, ". $dist;
        exit;
    }

    // End tjek diverse... //////////////////////////////////////



    // Fjerner "bad" tegn i filnavn ved upload
    function up_file_name($var) {

    $badchars = "\"'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,\$/\\";

    $var = strtolower($var);

        for($i = 0; $i < strlen($badchars); $i++) {
        $var = str_replace($badchars[$i], "", $var);
        }

    $replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", " " => "_");

        foreach($replace as $key => $value) {
        $var = str_replace($key, $value, $var);
        }

    return $var;
    }




// starter session hvis ikke startet. Bruges til at vise besked efter upload
if(!session_id()) {
session_start();
}


// UPLOAD AF FILER ////////////////////////////////////////

if(isset($_FILES["upfile"]) && is_array($_FILES["upfile"]))
{
    foreach($_FILES["upfile"]["error"] as $key => $error)
    {
        if($error == UPLOAD_ERR_OK)
        {

        $tempnavn = $_FILES["upfile"]["tmp_name"][$key];
        $filnavn = $_FILES["upfile"]["name"][$key];
        $filnavn = up_file_name($filnavn);



            if(intval($max_kb) > 0 && filesize($tempnavn) > (intval($max_kb)*1024))
            {
            $_SESSION["errors"]["toobig"][] = $filnavn;
            continue;
            }


            if($only_images != false)
            {
                if(false == ($str = getimagesize($tempnavn)))
                {
                $_SESSION["errors"]["no_img"][] = $filnavn;
                continue;
                }

            $typen = $str[2];

                if(!isset($filtyper[$typen]))
                {
                $_SESSION["errors"]["type"][] = $filnavn;
                continue;
                }

            $filnavn = basename($filnavn, $filtyper[$typen]);

                if(substr($filnavn, -1) != ".")
                {
                $filnavn = $filnavn .".";
                }

            $filnavn =  $filnavn . $filtyper[$typen];

            }else{

                if(isset($upload_types) && is_array($upload_types) && count($upload_types) > 0)
                {
                $file_info = pathinfo($filnavn);
                $file_type = $file_info["extension"];

                    if(!in_array($file_type, $upload_types))
                    {
                    $_SESSION["errors"]["type"][] = $filnavn;
                    continue;
                    }
                }

            }

            move_uploaded_file($tempnavn, $dist . $filnavn);
            chmod($dist . $filnavn, 0644);
            $_SESSION["files"][] = $filnavn;

        }
        else
        {
            if($error == 4) // Hvis der ingen fil er
            {
            continue;
            }

        $_SESSION["errors"]["upload"][$error][] = $_FILES["upfile"]["name"][$key];

        }
    }

header("Location:http://". $_SERVER["HTTP_HOST"] . $file_name);
exit;
}

// END UPLOAD AF FILER ////////////////////////////////////


// EVT. TEKST SOM VISES UNDER SUBMITKNAPPEN //////////////////////////

$textstring = "";
// Hvis kun billeder
$textstring .= ($only_images != false ? "\r\nKun billeder af typen ". implode(", ", $filtyper) ." uploades" : "");

// Viser evt. filtyper som kan uploades, hvis $only_images er false
if(empty($textstring) && isset($upload_types) && is_array($upload_types) && count($upload_types) > 0)
{
$textstring .= "\r\nKun filer med filendelsen ". implode(", ", $upload_types) ." kan uploades";
}

// Hvis $max_kb er defineret
$textstring .= (intval($max_kb) > 0 ? "\r\nHver fil må højst fylde ". intval($max_kb) ."Kb." : "");

// END EVT. TEKST SOM VISES UNDER SUBMITKNAPPEN /////////////////////

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>Upload af filer</title>

<script type="text/javascript">

function div_text($antal) {

    if(er_et_tal($antal) != false && $antal > 0) {
    var ialt = 0;
    var str = '';
      while(ialt < $antal) {
      str = str+'<br />\n<input type="file" name="upfile[]" size="32" onchange="vis_img(this.value);">';
      ialt++;
      }


<!-- script som IKKE bruger innerHTML vil være det bedste -->

    var file_ref = document.getElementById('uploadfelter');
    file_ref.innerHTML = str;

  }

}


function er_et_tal() {
    var reg = /^[\d]+$/;
    var navn = document.forms['do_upload'].elements['antal'];
    if(navn.value !='' && !navn.value.match(reg)){
      alert("Kun tal kan indtastes i feltet!");
      navn.value = '';
      return false;
    }
}

function vis_img(path) {

var ua = navigator.userAgent.toLowerCase();
var msie = ua.indexOf('msie');
var ope = ua.indexOf('opera');
    if (msie > -1 && ope < 1) {

    var filnavn = new String(path);
    filnavn = path.substring(path.lastIndexOf('\\')+1,path.length);
    filtypen = filnavn.substring(filnavn.lastIndexOf('.')+1,filnavn.length);
    filtypen = filtypen.toLowerCase();
<?php
    if(isset($filtyper[4])) {
    unset($filtyper[4]);
    }
    if(isset($filtyper[2])) {
    $filtyper[] = "jpeg";
    }
    $js_str = implode("\",\"", $filtyper);
?>
    var img_reg = /^["<?php echo $js_str; ?>"]+$/;

    var vis_img = document.getElementById("img_pre");

        if(filtypen.match(img_reg)) {
        vis_img.getElementsByTagName("b")[0].firstChild.nodeValue = filnavn;
        vis_img.getElementsByTagName("img")[0].setAttribute("src", path);
        vis_img.style.display = "block";
        }else{
        vis_img.style.display = "none";
        }

    }
}

</script>

</head>
<body>

<form name="do_upload" enctype="multipart/form-data" action="<?php echo $file_name; ?>" method="post">
Max. upload p&aring; en gang: <b><?php echo min(ini_get("post_max_size"), ini_get("upload_max_filesize")); ?>b.!</b><br />
Antal felter: <input type="text" name="antal" onfocus="select();" onkeyup="er_et_tal();" size="2">
<input type="button" value="Vis felter" onclick="div_text(this.form.antal.value);vis_img('empty');" onkeydown="div_text(this.form.antal.value);vis_img('empty');">

<div id="uploadfelter">

<script type="text/javascript">
div_text(<?php echo intval($default_fields); ?>);
</script>

</div>

<br />

<input type="submit" value="Upload">

<?php echo nl2br(htmlentities($textstring)); ?>

</form>

<div id="img_pre" style="display: none;">Imagepreview af filen <b>&nbsp;</b><br /><img src="" width="200"></div>


<?php

// VIS EVT. BESKEDER EFTER FIL UPLOAD

    if(isset($_SESSION["files"])) {
        echo "Fil". (count($_SESSION["files"]) > 1 ? "er" : "")." som er blevet uploadet:<br />\r\n";

            foreach($_SESSION["files"] as $fil)
            {
            echo"<b>". $fil ."</b>";
                if(!empty($up_link))
                {
                echo" <a href=\"". $up_link . $fil ."\" target=\"_BLANK\">Vis fil</a>";
                }
            echo "<br />\r\n";
            }

        unset($_SESSION["files"]);
    }



    if(isset($_SESSION["errors"])) {

    $error_msg = array("toobig" => "Valgte fil er større end tilladt, ( ". intval($max_kb) ." Kb. )",
                      "no_img" => "Valgte fil er ikke et billede",
                      "type" => "Filtypen er ikke tilladt for upload",
                      "upload" => array(1 => "Filen er større end tilladt i php.ini, ( upload_max_filesize )",
                                        2 => "Filen er større end tilladt hvad MAX_FILE_SIZE er defineret til i formularen",
                                        3 => "Kun en del af filen blev uploadet",
                                        6 => "Upload tmpdir findes ikke",
                                        7 => "Fejl ved skrivning af fil til disk"));

        $err = array_keys($_SESSION["errors"]);


        foreach($err as $mess)
        {

            if(!isset($error_msg[$mess]))
            {
            continue;
            }

        echo"<p>\r\n";
        $text = $error_msg[$mess];

            if(!is_array($text))
            {
            echo htmlentities($text) ."<br />\r\n";
            echo"<b>". implode("<br />\r\n", $_SESSION["errors"][$mess]) ."</b><br />\r\n";
            }
            else
            {

                foreach($_SESSION["errors"][$mess] as $key => $fejl) {

                    if(isset($text[$key]))
                    {
                    echo"<br />\r\n". htmlentities($text[$key]);
                    echo"<br />\r\n<b>". implode("<br />\r\n", $fejl) ."</b>";
                    }
                }
            }
        echo"</p>\r\n";
        }

    unset($_SESSION["errors"]);
    }

?>

</body></html>
Avatar billede mr-xmas Nybegynder
17. oktober 2007 - 19:45 #2
kan man nem lave så den ligger den ind i sql databasen ?
Avatar billede showsource Seniormester
18. oktober 2007 - 08:55 #3
ja da!
Avatar billede showsource Seniormester
18. oktober 2007 - 08:56 #4
Du gør det her:

move_uploaded_file($tempnavn, $dist . $filnavn);
chmod($dist . $filnavn, 0644);
Avatar billede mr-xmas Nybegynder
18. oktober 2007 - 17:09 #5
den viser bare et krys over billedet når den skal vise den jeg åbner
Avatar billede mr-xmas Nybegynder
18. oktober 2007 - 17:30 #6
hvordan kan jeg lave så den ændre navnet på filen til en masse tal fx BP_xxxxx en masse tal
Avatar billede showsource Seniormester
19. oktober 2007 - 06:29 #7
bruger du scriptet jeg pastede?
Avatar billede mr-xmas Nybegynder
26. oktober 2007 - 14:42 #8
ja det gør jeg
Avatar billede mr-xmas Nybegynder
29. oktober 2007 - 19:36 #9
kan man det?
Avatar billede showsource Seniormester
01. november 2007 - 20:31 #10
Jow, det kan du jo godt, men hvordan vil du få de forskellige navne?
Hvad er "kravene" for et filnavn?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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



IT-JOB

Netcompany A/S

Test Specialist

PensionDanmark

ML Engineer

Danske Andelskassers Bank A/S

IT-konsulent