李威 さぽている

          小說(shuō)翻譯,日語(yǔ)相關(guān)轉(zhuǎn)移至http://blog.hjenglish.com/liwei

          接著談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="必&#39035;是 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)  編輯  收藏

          評(píng)論

          # re: 接著談FileUpload的問(wèn)題 2007-08-07 09:12 yagami

          HI 多謝你的文章 不過(guò)我實(shí)驗(yàn)了下有個(gè)問(wèn)題
          就是如果你再加一個(gè)BUTTON2 不用添加事件 當(dāng)點(diǎn)擊第2個(gè)browse(就是自定義的那個(gè)fake的) 選好文件確定后 兩個(gè)textbox里都會(huì)有這個(gè)文件的路徑和名字 但只要一點(diǎn)多添加的那個(gè)BUTTON2 第一個(gè)textbox(也就是fileupload控件帶的那個(gè))里就被清空了 百思不得其解 望您能幫我分析下 謝謝  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 会理县| 鹤岗市| 永安市| 眉山市| 阜宁县| 宣威市| 东乡族自治县| 偏关县| 鲁甸县| 江西省| 富裕县| 湖北省| 茂名市| 甘德县| 伊川县| 樟树市| 韶关市| 祁阳县| 桐柏县| 青阳县| 彭水| 贺兰县| 株洲县| 绍兴市| 东乡族自治县| 商丘市| 吴忠市| 三门县| 惠水县| 资兴市| 黔南| 崇义县| 石棉县| 平罗县| 杭州市| 泌阳县| 福泉市| 大理市| 达孜县| 修文县| 安新县|