上次(http://www.tkk7.com/liwei/archive/2006/09/09/68697.html)談了fileupload控件的一些內容,主要談的是點擊自己定義的按鈕時,觸發該控件的一些幕后過程,但點擊控件中的瀏覽(英文為browse,日文為參照)時,仍然有些黑幕。
fileupload控件由一個textbox和一個button構成,但因它將兩個封裝在一起了,我們沒法對其單獨操作,只能利用提供的屬性方法來操縱它。
在點擊控件中的瀏覽按鈕時,它會先檢查textbox里是否有內容,如果沒有,它會調用系統中最近打開的文件夾,然后將其打開,默認會打開我的文檔;如果有值,它會依照該值來打開文件夾。在這里就會出現問題了,如果textbox里的值是標準的文件路徑的話,沒問題,但不是的話,就可能出問題,解決都很麻煩。據我測試的結果,幾下幾種情況會有問題:1不少于一個的/;2不少于一個的|;3不少于一個的<;(4兩個.;5兩個字符的組合:/)多個字符組合時,不確定。當出現一個\時,以上幾種情況都會無效。要是有其他不確定情況,還得請大家賜教了。當有以上情況時,點擊瀏覽時,它不會彈出文件選擇對話框。
要解決這個問題,我也沒好的方法。不過有些能啟發人的思路。
一
<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>
當焦點移出fileupload控件時,RegularExpressionValidator控件會起效,但瀏覽按鈕是fileupload控件的一部分,點擊時并沒有觸發RegularExpressionValidator控件。
不知是否有其他控件能夠監測呢?
二
<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>
這個就是將控件隱藏,再顯示一個text和button作畫面代替它,后面還是要調用控件提供的方法。這里text是只讀的,因為沒法給控件賦值。這樣做的話,自然就不會發生前面的問題了。