Avatar billede Slettet bruger
04. september 2007 - 23:25 Der er 12 kommentarer og
1 løsning

tjek file-form

Hejsa

Jeg har en formular som ser sådan her ud:

<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="File1">
<input type="submit" name="submit1" value="Copy file now!">
</form>

Det jeg så gerne vil er at lave en validering i Java-script som henter de sidste tre tegn i filnavnet som kommer til at stå i formularen... (altså fileextenssion). Så skal det tjekkes om det er "zip" hvis det er dette skal form-action ændres til en ting - og hvis det er "jpg" skal form-action ændres til noget andet. Hvis det så ikke er en af disse to ting skal der komme en alert og formularen skal tømmes...

Men hvordan henter vi de sidste tre tegn? Og hvordan kan jeg arbejde videre med dette?

\Dan
Avatar billede Slettet bruger
04. september 2007 - 23:29 #1
ville det ikke vaere nemmere at goere paa serveren? og langt mere sikkert. Hvis jeg nu kom ind paa din side og ikke anvendte javascript, hvad ville der saa ske?
Avatar billede olebole Juniormester
04. september 2007 - 23:38 #2
<ole>

Heldigvis er file-inputtet næsten umuligt at scripte mod - hvis man gør, kan filen ikke findes på serveren - så der sker ikke så meget ved det ... men jeg er derudover ganske enig.

Problemet er nemlig, at restriktionerne omkring dette element er blevet strammet igen og igen. Man kan derfor ikke være sikker på, hvad der vil ske 'i morgen'  ;o)

/mvh
</bole>
Avatar billede Slettet bruger
04. september 2007 - 23:40 #3
olebole >> kunne du ikke lige uddybe, jeg forstaar ikke helt din kommentar.
Avatar billede olebole Juniormester
04. september 2007 - 23:40 #4
daleif >> sorry, daleif - jeg misforstod dig vist i første omgang ... men det ændrer ikke så meget ved min holdning: Sorter filerne på serveren  :)
Avatar billede Slettet bruger
04. september 2007 - 23:45 #5
ok
Avatar billede olebole Juniormester
04. september 2007 - 23:47 #6
- og min misforståelse bestod i, jeg først troede, du retorisk spurgte om, hvad der mon ville ske, hvis jeg begyndte at scripte på siden gennem adressefeltet. Forsøger man f.eks. at sætte en ny value på denne måde, går det galt. Derimod kan man godt skrive noget à la:
    java script:document.forms[0].onsubmit=function(){};void(0)

- som, når man trykker 'Enter', sletter en evt. onsubmit-handler  ;o)
Avatar billede Slettet bruger
05. september 2007 - 00:09 #7
ah, ok. Jeg var bare mere simpel. Ville gerne vide have posteren havde taenkt sig der skulle ske hvis jeg som bruger anvender hans form helt uden javascript. Hvis action som default skal haandtere zip og jeg saa forsoeger at uploade en .jpg saa skal han under alle omstaendigheder lave et tjek paa serveren hvorved browser tjek ikke er ret meget vaerd.
Avatar billede olebole Juniormester
05. september 2007 - 00:26 #8
I know ... den gamle kan jo bare tage og læse, hvad du skriver!  ;D
Avatar billede Slettet bruger
05. september 2007 - 00:38 #9
Hej venner...

Nu inden der går stor-politik i den - så vil jeg da lige fortælle at jeg er helt klar over faren ved dette her... Men der er kun to personer udover mig som kommer til at skal bruge dette her script til noget. Det er til et cms-system... Og det her har intet med sikkerhed at gøre, som sådan. Det er bare for at sikre at der ikke er nogen som vælger den forkerte fil...

Så hvordan fanger vi de sidste tre tegn med Java-script?

Desuden har jeg selvfølgelig også tænkt mig at tjekke det igen efter upload på serveren om filen er "gyldig".

\Dan
Avatar billede olebole Juniormester
05. september 2007 - 01:33 #10
Jeg er ikke sikker på, om man overhovedet kan mere - i hvilke browsere - og om man kan i morgen - men det eneste, du muligvis kan gøre på klienten er:

<script type="text/JavaScript">
function foo(oF) {
    if (oF.myFile.value=="") return false;
    switch (oF.myFile.value.toLowerCase().split(".").pop()) {
        case "zip":
            oF.setAttribute("action", "zipSide.php");
            return true;
        break;
        case "jpg":
            oF.setAttribute("action", "jpgSide.php");
            return true;
        break;
        default:
            return false;
    }
}
</script>

<form action="" method="post" onsubmit="return foo(this)">
    <input name="myFile" type="file">
    <button type="submit">Upload</button>
</form>
Avatar billede olebole Juniormester
05. september 2007 - 01:36 #11
- og i virkeligheden kan du vel nøejes med dette i funktionen:

function foo(oF) {
    if (oF.myFile.value=="") return false;
    switch (oF.myFile.value.toLowerCase().split(".").pop()) {
        case "zip":
            oF.setAttribute("action", "zipSide.php");
        break;
        case "jpg":
            oF.setAttribute("action", "jpgSide.php");
        break;
        default:
            return false;
    }
    return true;
}
Avatar billede Slettet bruger
05. september 2007 - 18:40 #12
Tak for svaret... Men det endte med at jeg nåede at løse den selv på en lidt anden måde, men stadig i Java-script...

Men smid et svar alligevel olebole - for løsningsforslaget...

\Dan
Avatar billede olebole Juniormester
05. september 2007 - 21:37 #13
Selvtak  :)
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