webForumDet fria alternativet

Alert vid fel filändelse

2 svar · 460 visningar · startad av Tulork

TulorkMedlem sedan aug. 2004903 inlägg
#1

Så här ser tumnagelegneratorn jag införskaffat/fått av det trevliga folket på WF.

<?php
include("setts/conn.php");
//###################################
$thumb = "pic/thumb";                     // Mappen där thumbnails ska sparas
$original = "pic/original";             // Mappen där originalbilden ska sparas
$nybredd = 100;                        // Bredd som bilden ska ha i pixlar
$kompression = 100;                // Vilken komprimering (100=ingen)

//###################################

?>
<form action="test.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
    <input name="file" type="file" size="30" />
    <input type="submit" name="nyBild" value="Ladda upp" />
</form>
<?php

// ladda upp ny bild
if (!empty($_FILES['file']['name'])) {

    if (is_uploaded_file($_FILES['file']['tmp_name'])) {
    
            
        $bildnamn = $_FILES['file']['name'];
        $tempnamn = $_FILES['file']['tmp_name'];
        $filandelse = strtolower(substr($bildnamn, (strrpos($bildnamn, '.'))));
            
        $bildstrl =  getimagesize($tempnamn);
        

    //slumpar fram ett filnamn
    include ("setts/filnamns_generator.php");
    $bildnamn = $u;
    
        // Kolla filen så det är en bild
        if (($_FILES['file']['type'] != "image/gif") && ($_FILES['file']['type'] != "image/jpeg") && ($_FILES['file']['type'] != "image/png") && ($_FILES['file']['type'] != "image/pjpeg")) {
            echo "Bilden måste vara av typen gif, jpg, jpeg eller png.<br />
          Filändelser med stora bokstäver accepteras inte";
            exit;
        }
         
        // Ändra storleken om bilden är större än $nybredd
        if ($nybredd < $bildstrl[0]) {
    
            $nyhojd = ceil(($nybredd / $bildstrl[0]) * $bildstrl[1]);
            // Gör om bildens storlek
            $nybild = imagecreatetruecolor($nybredd, $nyhojd);
            // Kontrollera vilken bildtyp det är (1=gif , 2=jpg , 3=png)
            switch($bildstrl[2]) {
                case 1:
                    $bild = imagecreatefromgif($tempnamn);
                break;
                case 2:
                    $bild = imagecreatefromjpeg($tempnamn);
                break;
                case 3:
                    $bild = imagecreatefrompng($tempnamn);
                break;
            }
            imagecopyresampled($nybild, $bild, 0, 0, 0, 0, $nybredd, $nyhojd, $bildstrl[0], $bildstrl[1]);
            // Kopiera bilden till sin mapp
       $bild_namn = "$bildnamn$filandelse";
            $sparabild = $thumb . '/' . $bild_namn;
            imagejpeg($nybild, $sparabild, $kompression);
        //Flyttar orginalbilden till rätt mapp
        $bild_namn = "$bildnamn$filandelse";
            move_uploaded_file($tempnamn, $original . '/' . $bild_namn);
    $doit = "INSERT INTO annons (thumb, original)    VALUES ('$bildnamn$filandelse', '$bildnamn$filandelse')";
    $now = mysql_query($doit) or die ('Ett fel har uppstått');

            // Frigör minne som associerats med bilderna
            imagedestroy($bild);
            imagedestroy($nybild);
            
    

        } else {
            move_uploaded_file($tempnamn, $thumb . '/' . $bild_namn);
        copy ($thumb . '/' . $bild_namn, $original . '/' . $bild_namn);

    $doit = "INSERT INTO annons (thumb, original)    VALUES ('$bildnamn$filandelse', '$bildnamn$filandelse')";
    $now = mysql_query($doit) or die ('Ett fel har uppstått');

           

        }
    }
}
?>

Jag önskar nu lägga till ett litet javascript som kollar formuläret vid submit vad gäller filändelsen.. Jag vill bara tillåta jpeg, jpg, png, gif... om det försöks med en annan filändelse ska en Alert säga ifrån när man submitar.. alltså den stannar innan den laddat upp någonting.

Går detta ordna på ett smidigt sätt??

PS. Wohoo 500 inlägg!!

wally_91Medlem sedan feb. 2006511 inlägg
vicMedlem sedan apr. 2006244 inlägg
#3
if(
  !document.getElementById('formularet').user_file.value.substr(-4).toLowerCase().match('.jpg')
  &&   
  !document.getElementById('formularet').user_file.value.substr(-5).toLowerCase().match('.jpeg')
) 

{
alert('filen var inte i jpg-format');
return false;
}

------
<form action="" id="formularet">
<input type="file" name="user_file" /> etc...
272 ms totalt · 3 externa anrop · v20260731065814-full.30151723
141 ms — hämta forumlista (db)
127 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)