上傳文件的時候,在IE7下總是傳不了,但FireFox,IE11和Chrome下則可以上傳。發現是form.submit();時出錯了(“拒絕訪問”)。
html代碼為:
<label onclick="Upload()"> 上傳附件</label> <form id="uploadForm" enctype="multipart/form-data" target="framefile" method="post"> <input type="file" id="a" name="a" onchange="fileUpload()" style="display:none" /> </form>
js代碼為
function Upload() { document.getElementById("a").click(); } function fileUpload() { var form = document.getElementById('uploadForm'); form.action="XXX.do?"; form.submit(); }
原來是因為IE下 file表單控件,不能用js控制打開文件選擇器(就是隻能點擊file本身,不能通過js調用file.click方式),否則會報 “拒絕訪問”。所以,通過将file設置為透明(position:absolute;top:0px;right:0px;cursor:pointer; opacity:0;filter:alpha(opacity:0);z-index:999;),用div或者其他的标簽蓋住file,這樣點擊顯示的div時同樣也真實的點擊了file。
代碼做一下調整,這個問題就能解決了
<label for="a"> 上傳附件 </label> <form id="uploadForm" enctype="multipart/form-data" target="frameFile" method="post"> <input type="file" id="a" name="a" onchange="fileUpload()" style="position:absolute;top:0px;right:0px;cursor:pointer; opacity:0;filter:alpha(opacity:0);z-index:999;"/> </form>
function fileUpload() { var form = document.getElementById('uploadForm'); form.action="XXX.do?"; form.submit(); }