feng

          飄逸~~~~~life

          清空文件域的一種實(shí)現(xiàn)

          想象這樣一個(gè)場(chǎng)景
           我們采用了比如AJAX的方式上傳文件,可能上傳文件和提交表單會(huì)提交到不同的ACTION中處理,但是比如用戶選擇了一個(gè)文件,然后沒有點(diǎn)
          上傳,卻點(diǎn)擊提交表單,會(huì)有什么結(jié)果,當(dāng)然是這個(gè)文件流會(huì)一起提交,這樣造成的結(jié)果當(dāng)然是造成響應(yīng)速度的下降或者浪費(fèi)服務(wù)器內(nèi)存了,文件小的還好,要是很大的文件,我想用戶是要哭了。
          于是我們就需要在提交表單之前清空文件域,可能很多朋友都試過這樣的方法:
          document.getElementById("file").value="";
          <input id="file" type="file" name="fileObj" style="width:60%"> 
            
          然后你就會(huì)發(fā)現(xiàn)沒有報(bào)錯(cuò),但是問題沒有被解決?
          實(shí)際上文件域沒有或者說不能這樣賦值。
          下面給出一種重寫文件域的方法。
          首先你需要用一個(gè)<div>或者<span>標(biāo)簽把你的文件域包裹起來方便我們獲取,像下面這樣
           <span id="pfile"><input type="file"  name="file" onKeyDown="return false" onpaste="return false;" ></span></td>
          然后在提交表單前執(zhí)行如下JS
          document.getElementById("pfile").innerHTML = "<input type=\"file\" name=\"file\" onKeyDown=\"return false;\" onpaste=\"return false;\"/>";
          對(duì),就是這樣,你會(huì)發(fā)現(xiàn)問題解決了,是不是很簡單,呵呵。

          本方法不是我想出來的,只是網(wǎng)上一兄弟想出來的,我很厚道哦 
          要貼出原帖地址:
          http://blog.csdn.net/vince6799/archive/2005/11/01/520306.aspx  然后感謝他幫我解決了問題,同時(shí)分享給大家。
                         

          posted on 2009-08-10 14:37 feng 閱讀(1784) 評(píng)論(6)  編輯  收藏

          Feedback

          # re: 清空文件域的一種實(shí)現(xiàn) 2009-08-11 09:14 absolutej

          問一個(gè)問題
          提交的表單和上傳的文件關(guān)系是什么?
          也就是說表單里的內(nèi)容跟上傳的文件是不是附屬關(guān)系,也就是說上傳的文件依賴于表單的內(nèi)容?簡單的拿外鍵來理解

          還是表單里填寫的內(nèi)容和上傳的文件都是同一級(jí)關(guān)系,他們都是附屬于某個(gè)東西  回復(fù)  更多評(píng)論   

          # re: 清空文件域的一種實(shí)現(xiàn) 2009-08-11 09:23 feng

          實(shí)際上文件域跟其他表單域是在一個(gè)表單的啦,但是我們可以借助JS控制提交到不同的ACTION處理咯,也就是其中的文件域是單獨(dú)交給一個(gè)ACTION處理的,AJAX那種的話都是這樣的@absolutej
            回復(fù)  更多評(píng)論   

          # re: 清空文件域的一種實(shí)現(xiàn) 2009-08-11 09:26 字幕網(wǎng)站

          沒明白過來,表單和文件放到兩個(gè)form中不行么?  回復(fù)  更多評(píng)論   

          # re: 清空文件域的一種實(shí)現(xiàn) 2009-08-11 09:28 feng

          可以 當(dāng)然是可以啦 但是你會(huì)發(fā)現(xiàn)有時(shí)候我們會(huì)有特別的需求啥 如果放兩個(gè)表單的話也會(huì)有布局的問題。  回復(fù)  更多評(píng)論   

          # re: 清空文件域的一種實(shí)現(xiàn) 2009-08-11 09:54 隔葉黃鶯

          @feng
          我想你只要把文件域的 disabled 屬性設(shè)置為 true,是不是就可以達(dá)到你想要的結(jié)果,為 disabled 的表單域是不會(huì)提交給后臺(tái)的。  回復(fù)  更多評(píng)論   

          # re: 清空文件域的一種實(shí)現(xiàn) 2009-08-11 10:13 feng

          提交前設(shè)置document.getElementById("upload").disabled="true"; 確實(shí)可以實(shí)現(xiàn)不提交文件域的功能  回復(fù)  更多評(píng)論   



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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 元氏县| 石楼县| 博罗县| 喜德县| 芜湖县| 赤壁市| 边坝县| 凤庆县| 那坡县| 东兰县| 宜阳县| 鸡西市| 平谷区| 武山县| 陕西省| 垦利县| 清徐县| 招远市| 尚志市| 阳高县| 兴山县| 本溪| 杨浦区| 博湖县| 泰州市| 西昌市| 河东区| 中西区| 阿鲁科尔沁旗| 江永县| 潜江市| 武汉市| 合江县| 乐至县| 旬邑县| 封丘县| 南漳县| 容城县| 黄大仙区| 丹东市| 息烽县|