| 導購 | 订阅 | 在线投稿
分享
 
 
 

如何在客戶端清除fileUpLoad控件的文件路徑

來源:互聯網  2008-12-13 08:23:26  評論

今天在寫一項目的更新模塊遇到的一個問題:.net fileUpLoad控件只要選擇了文件在Postback的時候這個文件都會被自動上傳到服務器,而我的更新模塊裏需要有選擇的判斷要不要上傳文件,原理說起來比較簡單,直接把fileUpLoad控件選定的文件去除不就行了貝,可是使用js去除的時候發現IE下fileUpLoad控件的值居然還是只讀的,而在FireFox下是可以更改的。如果在.net提交事件中來處理是不是要保存這個文件那就意味著,被fileUpLoad控件選擇的文件都會被上傳一次到服務器,只不過是你存不存的問題了,相當浪費帶寬及服務器資源啊。不過還好饅頭的BLOG裏給出了解決的辦法,經比較個人感覺以下方式比較好:

引用

創建一個新的form,把上傳控件臨時放過來,再調用這個form的reset方法,完工之後再把上傳控件弄回去。這個form無需進入DOM結構便能正常工作,所以不用擔心會對界面有任影響。

具體解決代碼:view plaincopy to clipboardprint?

//把這個JS放到頁面的<body>中

<script language="javascript" type="text/javascript">

//清空文件上傳框,file爲上傳表單對像

function clearFileInput(file){

var form=document.createElement('form');

document.body.appendChild(form);

//記住file在舊表單中的的位置

var pos=file.nextSibling;

form.appendChild(file);

form.reset();

pos.parentNode.insertBefore(file,pos);

document.body.removeChild(form);

}

</script>

//把這個JS放到頁面的<body>中

<script language="javascript" type="text/javascript">

//清空文件上傳框,file爲上傳表單對像

function clearFileInput(file){

var form=document.createElement('form');

document.body.appendChild(form);

//記住file在舊表單中的的位置

var pos=file.nextSibling;

form.appendChild(file);

form.reset();

pos.parentNode.insertBefore(file,pos);

document.body.removeChild(form);

}

</script>view plaincopy to clipboardprint?

//添加按鈕的客戶端腳本事件,當然你也可以寫在按鈕的屬性裏,或是直接在HTML的button上加onclick事件也一樣

btnCannel.OnClientClick = "clearFileInput(document.getElementById('" + 上傳控件ID.ClientID + "'));"

  今天在寫一項目的更新模塊遇到的一個問題:.net fileUpLoad控件只要選擇了文件在Postback的時候這個文件都會被自動上傳到服務器,而我的更新模塊裏需要有選擇的判斷要不要上傳文件,原理說起來比較簡單,直接把fileUpLoad控件選定的文件去除不就行了貝,可是使用js去除的時候發現IE下fileUpLoad控件的值居然還是只讀的,而在FireFox下是可以更改的。如果在.net提交事件中來處理是不是要保存這個文件那就意味著,被fileUpLoad控件選擇的文件都會被上傳一次到服務器,只不過是你存不存的問題了,相當浪費帶寬及服務器資源啊。不過還好饅頭的BLOG裏給出了解決的辦法,經比較個人感覺以下方式比較好: 引用 創建一個新的form,把上傳控件臨時放過來,再調用這個form的reset方法,完工之後再把上傳控件弄回去。這個form無需進入DOM結構便能正常工作,所以不用擔心會對界面有任影響。   具體解決代碼:view plaincopy to clipboardprint? //把這個JS放到頁面的<body>中 <script language="javascript" type="text/javascript"> //清空文件上傳框,file爲上傳表單對像 function clearFileInput(file){ var form=document.createElement('form'); document.body.appendChild(form); //記住file在舊表單中的的位置 var pos=file.nextSibling; form.appendChild(file); form.reset(); pos.parentNode.insertBefore(file,pos); document.body.removeChild(form); } </script> //把這個JS放到頁面的<body>中 <script language="javascript" type="text/javascript"> //清空文件上傳框,file爲上傳表單對像 function clearFileInput(file){ var form=document.createElement('form'); document.body.appendChild(form); //記住file在舊表單中的的位置 var pos=file.nextSibling; form.appendChild(file); form.reset(); pos.parentNode.insertBefore(file,pos); document.body.removeChild(form); } </script>view plaincopy to clipboardprint? //添加按鈕的客戶端腳本事件,當然你也可以寫在按鈕的屬性裏,或是直接在HTML的button上加onclick事件也一樣 btnCannel.OnClientClick = "clearFileInput(document.getElementById('" + 上傳控件ID.ClientID + "'));"
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有