Avatar billede manutd Nybegynder
20. oktober 2003 - 14:58 Der er 17 kommentarer og
2 løsninger

Tildeling af værdi til et inputfelt af type file

Jeg har et input-felt af typen file, som jeg gerne vil tildele en værdi via javascript. Kan det overhovedet lade sig gøre?, og i givet fald hvordan.

Når man laver et inputfelt af denne type, så laves der automatisk en browse-knap ved siden af feltet, hvor brugeren kan gå ind aktivt og vælge en fil, og stien til denne vil bliver så lagt ind i file inputfeltet. Man kan også skrive stien i inputfeltet via tastatur, men man kan tilsyneladende ikke tildele en værdi til feltet via javascript, selv om feltet har en value attribut.

Er der nogen der kender løsningen på dette problem, og kan det overhovedet lade sig gøre, eller er det noget sikkerheds-noget i browseren, som gør at man ikke kan tildele en værdi.

Jeg vil gerne ha´ eksempler, hvis der er nogen som mener det kan lade sig gøre.

<input TYPE="file" NAME="CVfil" VALUE="">
Avatar billede mm12010 Nybegynder
20. oktober 2003 - 15:14 #1
"selv om feltet har en value attribut" << det har det ikke(så vidt jeg ved da)
Avatar billede roenving Novice
20. oktober 2003 - 15:16 #2
-- du har helt ret, manutd, der findes ikke nogen måder at tildele det en værdi, og det er fordi det betragtes som en sikkerhedsbrist, hvis man kunne !-)
Avatar billede ulrikp Nybegynder
20. oktober 2003 - 15:21 #3
Du er inde på det rigtige. value-attributten i input type=file er som default read-only af sikkerhedsmæssige årsager. Ellers kunne et uautoriseret script sætte et filnavn og uploade en fil til serveren. Du kan komme udenom det ved at sætte UniversalFileRead.
Avatar billede manutd Nybegynder
20. oktober 2003 - 15:24 #4
"Du kan komme udenom det ved at sætte UniversalFileRead"

Kan du ikke uddybe det lidt. Jeg kender ikke UniversalFileRead, og ved ikke hvordan jeg kan bruge det.

Har du evt. et lille eksempel?
Avatar billede olebole Juniormester
20. oktober 2003 - 21:32 #5
<ole>

Det kan kun sættes i NS ... og det vil koste dig mange tusinde kroner

/mvh
</bole>
Avatar billede Slettet bruger
21. oktober 2003 - 07:56 #6
Nedenstående virker kun i IE, og er derfor uegnet bortset fra til intranet brug. Men det er da et nyttigt "trick" i visse tilfælde.

<form>
<input type="text" name="fil" value="C:\Her er filen.fil" /> <input type="button" value="Gennemse" onclick="document.all.skjultfil.click();" />
<input type="file" id="skjultfil" onchange="this.form.fil.value = this.value;" style="display: none;" />
</form>
Avatar billede olebole Juniormester
21. oktober 2003 - 10:35 #7
phoenixv >> yups ... det er vist endda et af mine egne 'gamle hacks', men jeg har lidt på fornemmeren, at spørgeren gerne vil kunne sætte en default-fil som value på file-input'et - og det kan man jo heldigvis ikke  ;o)
/mvh
Avatar billede Slettet bruger
21. oktober 2003 - 21:26 #8
Tja, jeg kan ikke huske, hvor jeg har det fra. Det er vel højst sandsynligt her fra Eksperten... :)
Avatar billede roenving Novice
22. oktober 2003 - 02:02 #9
Hvilken ekspert *lol*
Avatar billede Slettet bruger
22. oktober 2003 - 18:16 #10
Ja, det er så det, jeg ikke kan huske... :)
Avatar billede roenving Novice
25. oktober 2003 - 03:06 #11
>>manutd

-- så kan den vel lukkes med svaret:

Det kan man ikke '-)
Avatar billede olebole Juniormester
25. oktober 2003 - 17:10 #12
Og mit hack er nu kun af historisk interesse. Idag spærrer IE for adgangen til at submitte formen, så snart man har fyret et script af mod en type=file. Formen resettes, men submittes ikke - og kan ikke submittes, før siden reloades.
/mvh
Avatar billede Slettet bruger
25. oktober 2003 - 17:14 #13
Ovenstående kode submitter da fint? IE6 SP1.
Avatar billede Slettet bruger
25. oktober 2003 - 17:16 #14
Avatar billede olebole Juniormester
25. oktober 2003 - 17:24 #15
Nuvel ... men det kan til gengæld heller ikke genere nogen. Prøver du med et realistisk eksempel, går den ikke  :)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<?
    var_dump($_FILES["skjultfil"]);
?>
<form enctype="multipart/form-data" action="<?=$_SERVER["PHP_SELF"]?>" method="post">
<input type="text" name="fil" value="C:\Her er filen.fil" />
<input type="button" value="Gennemse" onclick="document.all.skjultfil.click();" />
<br />
<input type="submit" value="O.k." />
<input type="file" name="skjultfil" id="skjultfil" onchange="this.form.fil.value = this.value;" style="display: none;" />
</form>
</body>
</html>
Avatar billede Slettet bruger
26. oktober 2003 - 12:06 #16
Okay, det kan jeg godt se... Det kan i øvrigt ikke omgås ved at smide værdien over i en anden form på siden; det har jeg lige prøvet. :)
Avatar billede olebole Juniormester
26. oktober 2003 - 16:11 #17
Nope ... det ser ud til, MS endelig har opdaget, det er nødvendigt at være yderst restriktiv overfor denne felttype. På høje tid, må man vel sige  ;o)
/mvh
Avatar billede olebole Juniormester
26. oktober 2003 - 16:14 #18
PS: Jeg har såmænd også prøvet andre 'fantasifulde' løsningsmuligheder ... sågar:
  <label for="ib"><button>TEST</button></label>
  <input id="ib" type="file" ....>
Men der er heldivis ikke noget at gøre  :)
Avatar billede manutd Nybegynder
28. oktober 2003 - 07:40 #19
Mange tak for de fine svar. Som I også rigtigt nok fremhæver, så er det nok godt nok, at det ikke kan lade sig gøre. Jeg finder en anden løsning.
Da hverken olebole eller phoenixv har svaret, så lader jeg pointene gå ligeligt fordelt mellem ulrikp og roenving.
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