程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 在客戶端清除fileUpLoad控件的文件路徑

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

編輯:關於ASP.NET

今天在寫一項目的更新模塊遇到的一個問題:.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 + "'));"

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved