ugrás a tartalomhoz

Fájl kiterjesztése + méret ellenőrzése egymás után javascripttel

PredMan · 2007. Okt. 13. (Szo), 15.35
Sziasztok!

lenne egy javascriptes problémám. Van két function, ami külön külön működik, de egymás után már nem tudom őket lefuttatni. Az egyik function a fájl méretét ellenőrzi, a másik pedig a fájl kiterjesztését. Azt szeretném, hogy mindkettő function lefusson egymás után, tehát ellenőrizze a méretet is, meg a kiterjesztést is. Egyszerüen nem tudom összehozni a kettőt!
a kiterjesztésellenőrző function-ben a "RETURN TRUE" miatt rögtön továbbugrik a script, ha pedig "FALSE"-ra állítom, akkor minden működik, csak éppen megfelelő kiterjesztésnél se enged tovább :)
légyszives segítsetek! előre is köszönöm! íme a html fájl tartalma:

[colorer=html]
<html>
<head>
<title> Upload </title>
<script type="text/javascript" language="JavaScript">
<!--

function getImgSize(imgSrc, flag){
if(!flag){
var newImg = new Image();
imgSrc="file://localhost/"+imgSrc;
newImg.src =imgSrc;

}

else
var newImg = imgSrc

if (typeof newImg.complete=='boolean'&&(newImg.complete&&newImg.height*1>0)){
var height = newImg.height;
var width = newImg.width;
var size = newImg.fileSize;
}

if (size > 100000) {
alert ('tooo big!');
return false;
}

else if (typeof newImg.complete=='boolean'){
setTimeout(function(){getImgSize(newImg,'x')}, 3000);
}

else alert('Image cannot be evaluated for size');
}


function ExtensionsOkay(form) {
var message = "Csak JPG képet tölthet fel!";
var extension = new Array();
var fieldvalue = document.getElementById('image').value.toLowerCase();

extension[0] = ".jpg";
extension[1] = ".jpeg";

var thisext = fieldvalue.substr(fieldvalue.lastIndexOf('.'));
for(var i = 0; i < extension.length; i++) {
if(thisext == extension[i]) {
getImgSize(fieldvalue); return true;
}
}

alert(message);
return false;
}

//-->
</script>

</head>
<body>
<form method="POST" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data" onSubmit="return ExtensionsOkay(this);">
<table align="center" width="20%" height="20%">
<tr>
<td align="center"><b>FELTÖLTÉS</b></td>
</tr>
<tr>
<td align="center"><input type="file" name="image" id="image"></td>
</tr>
<tr>
<td align="left"><input type="Submit" name="Submit" value=" OK "></td>
</tr>
</table>
</form>
</body>
</html>
[/oolorer]
 
1

helo

flash42 · 2007. Okt. 13. (Szo), 16.26
Nemértek a javascripthez, de mint fejbenfordító helyesen működik a js engine ha úgy működik ahogy leírtad. Szerintem azt írjad bele amit kéne csinálnia:) Például ne a getSizeot, hanem checkSize függvényt valósítsad meg, és ne ExtOK, hanem checkExt legyen a másik. Alapból te a getSize függvényednek egy boolean visszatérési értéket adsz, ami enyhén nehezen olvashatóvá teszi a logikát. Ha már ilyen szabad nyelvben programozol (nincs kötelező visszatérési érték típus) legalább a nevekkel ne csapjad be önmagad. Plusz minden if-else ágba illik visszaadni valamit. Tehát írjad át a kódot úgy hogy a neveknek megfelelően működjön, majd ellenőrizzed a visszatérési értéket. Ha meg ki akarsz iratni hibákat azt ne egy boolean visszatérésű függvény belsejében tegyed, hanem utána.
pseudo kód:
checkImage()
   if checkExt
      if checkSize()
         return true
      else
         write size error
         return false
   else
      write ext error
      return false
return false // ez csak a szimmetria miatt, meg mert pesszimista vagyok