想象這樣一個(gè)場(chǎng)景
我們采用了比如AJAX的方式上傳文件,可能上傳文件和提交表單會(huì)提交到不同的ACTION中處理,但是比如用戶(hù)選擇了一個(gè)文件,然后沒(méi)有點(diǎn)
上傳,卻點(diǎn)擊提交表單,會(huì)有什么結(jié)果,當(dāng)然是這個(gè)文件流會(huì)一起提交,這樣造成的結(jié)果當(dāng)然是造成響應(yīng)速度的下降或者浪費(fèi)服務(wù)器內(nèi)存了,文件小的還好,要是很大的文件,我想用戶(hù)是要哭了。
于是我們就需要在提交表單之前清空文件域,可能很多朋友都試過(guò)這樣的方法:
document.getElementById("file").value="";
<input id="file" type="file" name="fileObj" style="width:60%">
然后你就會(huì)發(fā)現(xiàn)沒(méi)有報(bào)錯(cuò),但是問(wèn)題沒(méi)有被解決?
實(shí)際上文件域沒(méi)有或者說(shuō)不能這樣賦值。
下面給出一種重寫(xiě)文件域的方法。
首先你需要用一個(gè)<div>或者<span>標(biāo)簽把你的文件域包裹起來(lái)方便我們獲取,像下面這樣
<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èn)題解決了,是不是很簡(jiǎn)單,呵呵。
本方法不是我想出來(lái)的,只是網(wǎng)上一兄弟想出來(lái)的,我很厚道哦
要貼出原帖地址:
http://blog.csdn.net/vince6799/archive/2005/11/01/520306.aspx 然后感謝他幫我解決了問(wèn)題,同時(shí)分享給大家。