22. september 2003 - 14:12Der er
18 kommentarer og 2 løsninger
Validering af filnavn
Jeg vil gerne validerer, at et filnavn kun indeholder følgende karakterer når jeg vælger at uploade en fil: abcdefghijklmnopqrstuvwxyz1234567890
typisk vil en sti jo se sådan her ud: J:\billeder usorteret\Biler\1932 Ford.jpg
- og den skal så kun validerer det der står mellem det sidste . og den sidste \
Jeg bruger pt. følgende til at validerer om filtypen er den rigtige:
<script type="text/javascript"> // formular tjek start function tjek_fil(){ var tjek = document.fil;
if (fil.foto.value == ""){ alert("Du skal vælge en fil"); fil.foto.focus(); return (false); } // checker filtype if (fil.foto.value.length>0){ FileType = fil.foto.value.substring(fil.foto.value.length-4) FileType = FileType.toLowerCase() if (FileType!=".jpg" && FileType!=".gif"){ alert("Der kan kun bruges filer af typen .jpg og .gif !"); fil.foto.focus(); return (false); }
Noget i denne stil må kunne bruges: tegn="abcdefghijklmnopqrstuvwxyz1234567890" filnavn="abcdefg" for i=1 to len(filnavn) if instr(tegn,mid(filnavn,i,1)=0 then 'fejl skal håndteres exit for end if next
lklingenbergs idé er klart den bedste, men jeg kender ikke den der \a, men ville bruge \w som betyder tal, bogstaver (a-z) og _, som vel også er det som må være lovligt, så:
function validFilename(txt){ regExp = /^\w+$/i; return txt.match(regExp); }
<script type="text/javascript"> // formular tjek start function tjek_fil(){ var tjek = document.fil;
if (fil.foto.value == ""){ alert("Du skal vælge en fil"); fil.foto.focus(); return (false); } // checker filtype if (fil.foto.value.length>0){ FileType = fil.foto.value.substring(fil.foto.value.length-4) FileType = FileType.toLowerCase() file = fil.foto.value.substring(fil.foto.value.lastIndexOf("\"),fil.foto.value.lastIndexOf(".")) if (FileType!=".jpg" && FileType!=".gif" || !validFileName(file)){ alert("Fejl i filnavn.\nKun tal og/eller bogstaver i filnavn, eller typefejl.\nDer kan kun bruges filer af typen .jpg og .gif !"); fil.foto.focus(); return (false); }
} // slut for filcheck return (true); } function validFilename(txt){ regExp = /^\w+$/i; return txt.match(regExp); } </script>
mm12010 >> jeg har nu prøvet dit script, det submitter uanset hvad, også selvom der slet ikke er valgt en fil.
roenving >> jeg er ikke helt sikker på jeg forstår det med regExp og jeg kan heller ikke rigtigt få dit script til at virke, jeg vil gerne have at den laver en alert hvis der er ulovlige karakterer i navnet.
Der var en fejl mht. \ -- den kører helt på min egen nu !-)
<script type="text/javascript"> // formular tjek start function tjek_fil(){ var tjek = document.fil;
if (fil.foto.value == ""){ alert("Du skal vælge en fil"); fil.foto.focus(); return (false); } // checker filtype if (fil.foto.value.length>0){ FileType = fil.foto.value.substring(fil.foto.value.length-4) FileType = FileType.toLowerCase() file = fil.foto.value.substring(fil.foto.value.lastIndexOf("\\")+1,fil.foto.value.lastIndexOf(".")) if (FileType!=".jpg" && FileType!=".gif" || !validFilename(file)){ alert("Fejl i filnavn.\nKun tal og/eller bogstaver i filnavn, eller typefejl.\nDer kan kun bruges filer af typen .jpg og .gif !"); fil.foto.focus(); return (false); }
} // slut for filcheck return (true); } function validFilename(txt){ regExp = /^\w+$/i; return txt.match(regExp); } </script>
- lige et tillægsspørgsmål hvis i lytter med endnu, jeg bruger nu koden fra mm12010 men hvad nu hvis jeg vil tillade brugen af underscore og minus udover bogstaver og tal?
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.