接著談FileUpload的問(wèn)題
上次(http://www.aygfsteel.com/liwei/archive/2006/09/09/68697.html)談了fileupload控件的一些內(nèi)容,主要談的是點(diǎn)擊自己定義的按鈕時(shí),觸發(fā)該控件的一些幕后過(guò)程,但點(diǎn)擊控件中的瀏覽(英文為browse,日文為參照)時(shí),仍然有些黑幕。
fileupload控件由一個(gè)textbox和一個(gè)button構(gòu)成,但因它將兩個(gè)封裝在一起了,我們沒(méi)法對(duì)其單獨(dú)操作,只能利用提供的屬性方法來(lái)操縱它。
在點(diǎn)擊控件中的瀏覽按鈕時(shí),它會(huì)先檢查textbox里是否有內(nèi)容,如果沒(méi)有,它會(huì)調(diào)用系統(tǒng)中最近打開(kāi)的文件夾,然后將其打開(kāi),默認(rèn)會(huì)打開(kāi)我的文檔;如果有值,它會(huì)依照該值來(lái)打開(kāi)文件夾。在這里就會(huì)出現(xiàn)問(wèn)題了,如果textbox里的值是標(biāo)準(zhǔn)的文件路徑的話(huà),沒(méi)問(wèn)題,但不是的話(huà),就可能出問(wèn)題,解決都很麻煩。據(jù)我測(cè)試的結(jié)果,幾下幾種情況會(huì)有問(wèn)題:1不少于一個(gè)的/;2不少于一個(gè)的|;3不少于一個(gè)的<;(4兩個(gè).;5兩個(gè)字符的組合:/)多個(gè)字符組合時(shí),不確定。當(dāng)出現(xiàn)一個(gè)\時(shí),以上幾種情況都會(huì)無(wú)效。要是有其他不確定情況,還得請(qǐng)大家賜教了。當(dāng)有以上情況時(shí),點(diǎn)擊瀏覽時(shí),它不會(huì)彈出文件選擇對(duì)話(huà)框。
要解決這個(gè)問(wèn)題,我也沒(méi)好的方法。不過(guò)有些能啟發(fā)人的思路。
一
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="FileUpload1"?
???????????? ErrorMessage="必须是 jpg或者gif文件" ValidationExpression="^(([a-zA-Z]:)|(\\{2}\W+)\$?)(\\(\W[\W].*))+(.jpg|.Jpg|.gif|.Gif)$"></asp:RegularExpressionValidator>
當(dāng)焦點(diǎn)移出fileupload控件時(shí),RegularExpressionValidator控件會(huì)起效,但瀏覽按鈕是fileupload控件的一部分,點(diǎn)擊時(shí)并沒(méi)有觸發(fā)RegularExpressionValidator控件。
不知是否有其他控件能夠監(jiān)測(cè)呢?
二
<HTML>
<HEAD>
</HEAD>
<SCRIPT LANGUAGE="JAVASCRIPT" type="text/javascript">
function HandleFileButtonClick()
{ document.frmUpload.myFile.click();
document.frmUpload.txtFakeText.value = document.frmUpload.myFile.value;
}
</SCRIPT>
<body>
<form name="frmUpload">
<input type="file" name="myFile" style="DISPLAY:none">
<input type="text" name="txtFakeText" readonly>
<input type="button" onclick="HandleFileButtonClick();" value="Browse" style="BACKGROUND:white">
</form>
</body>
</HTML>
這個(gè)就是將控件隱藏,再顯示一個(gè)text和button作畫(huà)面代替它,后面還是要調(diào)用控件提供的方法。這里text是只讀的,因?yàn)闆](méi)法給控件賦值。這樣做的話(huà),自然就不會(huì)發(fā)生前面的問(wèn)題了。
posted on 2006-10-05 18:55 李威 閱讀(1311) 評(píng)論(1) 編輯 收藏