[html]textfield type=file openen in standaard folder

Pagina: 1
Acties:

  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
In een form kan men een plaatje toevoegen, dit plaatje word opgeslagen met de bestandsnaam, wat in de site word weergegeven als:
[img]"./images"<%=plaatje%>"[/img]

Als er een plaatje ingevoerd word hoeft alleen de bestandsnaam opgegeven te worden.

Als men een record wil wijzigen(plaatje is dus al een keer ingevoerd) opent men het form met de waarde:nieuw=false.

Wil men een nieuw record toevoegen word het form geopend met de waarde nieuw=true.

Vervolgens word de volgende code afgewerkt:
ASP:
1
2
    <td> <%if (nieuw="false") then%><input type="file" name="afbeelding" size="75" value="<%=(Recordset1.Fields.Item("Afbeelding").Value)%>">
            <%else%><input type="file" name="afbeelding" size="75" value="v:\images\"><%end if%>


nu zijn er 2 kanttekeningen:

1: Als ik een bestandsnaam selecteer verschijnt het hele PAD, maar alleen de bestandsnaam moet in het textfield komen. Kan ik dit parsen?

2:Als ik een record wil bewerken, komt de bestandsnaam niet te staan(vaag).
Scenario: Iemand wil z'n naam veranderen en niet z'n plaatje, persoon wijzigt z'n naam, plaatje is weg omdat er niks in dat veld stond.

De standaard folder waar mensen terecht moeten komen als er op browse gedrukt word is v:\images

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

een input met type="file" kan je om security-redenen niet van een value voorzien, voor de rest is de afhandeling browser-afhankelijk en is niet te beinvloeden.

Intentionally left blank


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

2:Als ik een record wil bewerken, komt de bestandsnaam niet te staan(vaag).
Dat kan ook niet; anders kan je zonder toestemming bestanden uploaden van een bezoeker.

Je zult denk ik zelf een eigen componentje moeten bakken.

edit:

/me vindt crisp weer veel te snel

[ Voor 10% gewijzigd door gorgi_19 op 23-10-2003 11:20 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
gorgi_19 schreef op 23 oktober 2003 @ 11:19:
[...]

Dat kan ook niet; anders kan je zonder toestemming bestanden uploaden van een bezoeker.

Je zult denk ik zelf een eigen componentje moeten bakken.

edit:

/me vindt crisp weer veel te snel
Ik hoef ook niet te uploaden, alleen de bestandsnaam te weten.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Zelfde principe; kan niet. Je kan zelf niets in een type=file veld plaatsen, zoals crisp al reeds aangaf. Je zult het gewoon als platte tekst of in een textbox moeten neerzetten.

[ Voor 88% gewijzigd door gorgi_19 op 23-10-2003 11:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Cai schreef op 23 October 2003 @ 11:21:
[...]


Ik hoef ook niet te uploaden, alleen de bestandsnaam te weten.

zet je input van type="file" dan buiten je form, en lees onchange de waarde uit - kap het pad ervan af en gooi de filenaam in een input type="text" in je form.

Intentionally left blank


  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
Dan over een andere boeg, zat denk ik in de verkeerde richting te zoeken.

Het hele principe werkte in principe(wat ik boven heb beschreven) maar den met textfields, dit verhaal wilde ik dus eigenlijk voor gebruikersgemak....

Hoe zouden "jullie" dit aanpakken.

weet nu nl. dat ik in de hele verkeerde hoek zat

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ik heb het wel eens gedaan door de input type="file" geen name te geven, en zo te stylen dat alleen de browse button zichtbaar was, en vervolgens de bestandsnaam uit te lezen en in een gewoon textveld stoppen.

Intentionally left blank


  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
crisp schreef op 23 oktober 2003 @ 11:24:

[...]

zet je input van type="file" dan buiten je form, en lees onchange de waarde uit - kap het pad ervan af en gooi de filenaam in een input type="text" in je form.
waarom zo moeilijk en het niet in je form zetten???
Dat werkt ook....

Zit nu te denken als ik dus browse komt het pad+filename erin... Onchange event pad van filename afhalen tadaa. Probleem opgelost denk.

Alleen wat vreemd is, dat als je een waarde in een record bij afbeelding hebt(gesjekt in SQL server) die niet weergegeven word.
Maak ik het textfield type=text Word de waarde wel weergegeven

  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
crisp schreef op 23 oktober 2003 @ 11:29:
ik heb het wel eens gedaan door de input type="file" geen name te geven, en zo te stylen dat alleen de browse button zichtbaar was, en vervolgens de bestandsnaam uit te lezen en in een gewoon textveld stoppen.
Das een idee ja, maar kan ik niet dan beter met een gewone button, een browse functie erop zettten....

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Cai schreef op 23 October 2003 @ 11:31:
[...]


Das een idee ja, maar kan ik niet dan beter met een gewone button, een browse functie erop zettten....

je kan alleen het browse venster oproepen met de browse button van een input type="file"
Je zou wel een custom button er bovenop kunnen plaatsen zodat de originele browsebutton niet meer zichtbaar is maar nog wel geactiveerd wordt als je op de custom button klikt ;)

Intentionally left blank


  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
Hoe doe ik dit. Input type= file invisible maken.
Extra button: onClick = textfield(file).Click //OID
onChange textfield(file) textfield(text) = textfield(file)

in die richting, maar dan juiste syntaxis proberen te vinden, of zit ik er dan naast

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Cai schreef op 23 October 2003 @ 11:40:
[...]


Hoe doe ik dit. Input type= file invisible maken.
Extra button: onClick = textfield(file).Click //OID
onChange textfield(file) textfield(text) = textfield(file)

in die richting, maar dan juiste syntaxis proberen te vinden, of zit ik er dan naast

bijvoorbeeld; wat ik eens heb gedaan is een button zo positioneren dat 'ie de 'browse' button precies overlapte - dat was noodzakelijk omdat Mozilla de click() method niet honoreerde (tegenwoordig geloof ik wel)

Intentionally left blank


  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
crisp schreef op 23 October 2003 @ 12:26:

[...]

bijvoorbeeld; wat ik eens heb gedaan is een button zo positioneren dat 'ie de 'browse' button precies overlapte - dat was noodzakelijk omdat Mozilla de click() method niet honoreerde (tegenwoordig geloof ik wel)
Arrrggghhhhh zoals je aan de tijd kunt zien, heb ik het de hele middag geprobeerd, maar ik krijg het niet voor elkaar.

Zou je misschien iets specifieker kunnen omschrijven, want het lukt me niet.
[stoute modus]
bij voorbaat dank
[/stoute modus]

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

tesje:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<head>
<title>test</title>
<script type="text/javascript">

function doemaar(value) {

  var file = /[^\\]+$/.exec(value)[0];
  document.forms['myform'].elements['filename'].value = file;

}

</script>
<body>
<form name="myform">
  <input name="filename" type="text" />
  <input type="button" value="browse" onclick="document.getElementById('filebrowser').click()" />
</form>
<input style="display:none" type="file" id="filebrowser" onchange="doemaar(this.value)" />
</body>
</html>


in Mozilla lijkt de onchange voor input type="file" stuk te zijn, en ik weet ook niet of de click() method ervoor werkt (1.3 in ieder geval niet) - dus dat zal aardig wat work-arounds vergen...

Intentionally left blank


  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
Wat Mozilla betreft: de kans dat de doelgroep waarvoor ik deze site maak een mozilla browser heeft is ongeveer evengroot als dat Mabel niet heeft gelogen.

Voor de rest: Two duimen up.

Misschien handig ter referentie, dat je een kleine referentie erbij levert, voor toekomstige gotters die zoeken.

Ik snap vrijwel alles, behalve je variabele vulling.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Cai schreef op 24 oktober 2003 @ 10:17:
[...]
Ik snap vrijwel alles, behalve je variabele vulling.

je bedoelt dit denk ik:
JavaScript:
1
var file = /[^\\]+$/.exec(value)[0];

dat is een reguliere expressie :)

Intentionally left blank


  • Cai
  • Registratie: December 2001
  • Laatst online: 21-08 11:47
crisp schreef op 24 October 2003 @ 10:33:

[...]

je bedoelt dit denk ik:
JavaScript:
1
var file = /[^\\]+$/.exec(value)[0];

dat is een reguliere expressie :)
Ja dat dacht ik al, was dat gister met uitproberen ook al tegengekomen, maar is vrij pittig, aangezien ik het nooit eerder ben tegengekomen, komt uit Perl toch?Kan de logica er nog niet echt in vinden
Moet er even goed voor gaan zitten.
Als jij zo'n expressie bouwt, kan je dat al volledig uit je hoofd op pak je er naslagwerk bij?
Pagina: 1