Avatar billede sylvesternielsen Nybegynder
16. august 2002 - 19:10 Der er 12 kommentarer og
1 løsning

Se billede efter valg i file field

Jeg har et file field til at uploade billede i. Jeg ville gerne have at jeg når billedet er valgt at man så kan se det i browseren. En som har et script til det?
Avatar billede =maddog= Nybegynder
16. august 2002 - 21:30 #1
<img name="pic" src="spacer.gif">
<form name="tool" method="POST" action="../servlet/nordisk.upload" enctype="multipart/form-data" target="_self">
Lokal fil (fra din egen computer)<input name="fileupload" type="file" onchange="document.images['pic'].src='file:///'+this.value;"><br>
<input type="submit" value="Send fil"></form>
Avatar billede Slettet bruger
16. august 2002 - 21:32 #2
Det er desværre lidt ressourcekrævende, i og med at scriptet tjekker hvert halve sekund, om brugeren har valgt et nyt billede, men der er ikke rigtigt noget at gøre:

<html>
<head>
<script>
function opd() {
src = (document.frm.fil.value == "") ? "blank.gif" : document.frm.fil.value;
document.images["mitBillede"].src = src;
setTimeout("opd();", 500); //Tjekker, om der er sket opdateringer hvert halve sekund
}
</script>
</head>
<body>
<form name="frm">
<input type="file" name="fil" onClick="opd();">
<br>
<img src="blank.gif" name="mitBillede" onError="this.src = 'blank.gif';">
</form>
</body>
</html>
Avatar billede Slettet bruger
16. august 2002 - 21:33 #3
onChange virker da vist ikke her, gør det? (ikke i IE5 i hvert fald!)
Avatar billede =maddog= Nybegynder
16. august 2002 - 21:36 #4
skulle virke tilbage til v4 browsere. AFAIK.
Avatar billede =maddog= Nybegynder
16. august 2002 - 21:37 #5
men det ville være en ide at bytte \ ud med /
onchange="document.images['pic'].src='file:///'+this.value.replace(/\\/g,'/');"
Avatar billede Slettet bruger
16. august 2002 - 21:44 #6
Nu virker mit bud også som det skal:

<html>
<head>
<script>
function opd() {
src = (document.frm.fil.value == "") ? "../Billeder/nonne.gif" : ("file:///" + document.frm.fil.value.replace(/\\/g, "/"));
document.images["mitBillede"].src = src;
setTimeout("opd();", 500); //Tjekker, om der er sket opdateringer hvert halve sekund
}
</script>
</head>
<body>
<form name="frm">
<input type="file" name="fil" onChange="opd();">
<br>
<img src="../Billeder/nonne.gif" name="mitBillede">
</form>
</body>
</html>

Det er testet i IE5 og NS7.
Avatar billede Slettet bruger
16. august 2002 - 21:45 #7
Hov, den dér ../Billeder/nonne.gif er kun en test, jeg kørte! :)
Avatar billede =maddog= Nybegynder
16. august 2002 - 21:48 #8
du kan sætte en direkte pointer til en funktion i setTimeout og 'spare' en regnetung eval().
setTimeout(opd, 500);
men det ligner noget. mon ikke dj saw har fået den hjælp han har brug for :D
Avatar billede =maddog= Nybegynder
16. august 2002 - 21:48 #9
hhmmmm. nonne. skummelt.
Avatar billede Slettet bruger
16. august 2002 - 21:49 #10
I NS7 virker onChange heller ikke optimalt. Det ser ud, som om eventen først bliver affyret, når Gennemse-knappen blurres.
Avatar billede Slettet bruger
16. august 2002 - 21:50 #11
Hvis du er interesseret, ligger billedet her:
http://www.friserverplads.dk/phoenixv/nonne.gif
:)
Avatar billede =maddog= Nybegynder
16. august 2002 - 21:52 #12
heh. ok knap så skummelt som antaget. men en nitte med onchange. måske din onclick / errorcatch finesse ikke var så dum endda.
Avatar billede Slettet bruger
16. august 2002 - 21:53 #13
Ja, den glemte jeg forøvrigt at få med i anden omgang:

<img src="blank.gif" name="mitBillede" onError="this.src = 'blank.gif';">
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