access denied v. brug af fileupload.click()
Til filupload af grafik ønsker jeg at undgå at benytte den grimme grafik der følger med <input name="fu" type="file">. Jeg har derfor skjult den med css og benytter en <span onclick="[..].fu.click()">[...]</span>Med filen valgt med mit alternativ får jeg imidlertid en 'access denied' fejl, når jeg forsøger at sende formen.
Der er ingen fejl når jeg har valgt filen med knappen i <input type="file">.
Jeg skal altså bruge en måde hvorpå jeg kan skjule filvælgeren, aktivere den via .click(), og stadig kunne submitte min form. Koden nedenfor:
<html>
<head>
<style type="text/css">
/* start : funtionsvinduer (div layers) */
.funkwin {filter: alpha(enabled, opacity=95); position: absolute; visibility: hidden; border: solid 2px #E4E0CD; background-color: #F1EFE7; font-size:10pt; padding: 3pt; width:75%}
.funkhead {font-weight: bold; font-size:12pt; text-align:left}
.funkbut {padding: 2pt; border: solid 2px #EBE7DB; background-color: #FDFCF9; color: blue; cursor: hand}
.funktoolsline {white-space: no-wrap; font-size: 8pt; border-right: solid 1px #FFFFFF; border-bottom: solid 1px #FFFFFF; border-left: solid 1px #EBE7DB; border-top: solid 1px #EBE7DB; padding: 2pt; background-color: #FDFCF9;}
.funktxtbox {font-family: arial; font-size: 8pt; border-width: 1px; width:75%}
.funkhelp {font-size:8pt;}
.funkhelpbox {padding:3pt; font-size 9pt; text-align: right; white-space: nowrap}
.funkinputtxt {font-size: 8pt; border-width: 1px}
/* slut : funtionsvinduer (div layers) */
</style>
<script type="text/javascript">
function visImg(str){
//viser valgt billede i billede layer
newp = new Image()
newp.src = str
document.selport.width = 61
document.selport.height = 76
document.selport.src = newp.src
document.selport.alt = "eksempel"
document.all.filup.value = str
document.gfxform.fileupload.focus()
}
function cnfSubm(tform, outp){
if(confirm("Tilføj dette til " + outp + "?"))
document[tform].submit(this)
}
</script>
</head>
<body>
<div id="addtogfx" class="funkwin" style="width: 280px; visibility:visible">
<div class="funkhead">Nyt billede</div><br>
<form id="gfxform" name="gfxform" enctype="multipart/form-data" action="flo.asp" method="post">
<input type="file" width="60" name="fileupload" id="fileupload" onchange="visImg(this.value)" style="visibility: visible; position: relative">
<img src="default.jpg" align="left" id="selport" name="selport" alt="nuværende billede" style="width:61px; height:76px; border: solid 1px black;">
<span style="height: 76px; padding-left: 5pt; color: blue; cursor: pointer;" onclick="document.gfxform.fileupload.click()">vælg billedfil</span>
<input name="action" type="hidden" value="upload">
<input name="filup" id="filup" type="hidden" value="">
</form>
<span class='funkbut' onclick='cnfSubm("gfxform","dit billede")'>Opdater</span>
</div>
</body>
</html>