feng

飘逸~~~~~life

清空文件域的一种实现

想象这样一个场景
 我们采用了比如AJAX的方式上传文件,可能上传文件和提交表单会提交到不同的ACTION中处理,但是比如用户选择了一个文件,然后没有点
上传,却点击提交表单,会有什么结果,当然是这个文件流会一起提交,这样造成的结果当然是造成响应速度的下降或者浪费服务器内存了,文件小的还好,要是很大的文件,我想用户是要哭了。
于是我们就需要在提交表单之前清空文件域,可能很多朋友都试过这样的方法:
document.getElementById("file").value="";
<input id="file" type="file" name="fileObj" style="width:60%"> 
  
然后你就会发现没有报错,但是问题没有被解决?
实际上文件域没有或者说不能这样赋值。
下面给出一种重写文件域的方法。
首先你需要用一个<div>或者<span>标签把你的文件域包裹起来方便我们获取,像下面这样
 <span id="pfile"><input type="file"  name="file" onKeyDown="return false" onpaste="return false;" ></span></td>
然后在提交表单前执行如下JS
document.getElementById("pfile").innerHTML = "<input type=\"file\" name=\"file\" onKeyDown=\"return false;\" onpaste=\"return false;\"/>";
对,就是这样,你会发现问题解决了,是不是很简单,呵呵。

本方法不是我想出来的,只是网上一兄弟想出来的,我很厚道哦 
要贴出原帖地址:
http://blog.csdn.net/vince6799/archive/2005/11/01/520306.aspx  然后感谢他帮我解决了问题,同时分享给大家。
               

posted on 2009-08-10 14:37 feng 阅读(1765) 评论(6)  编辑  收藏

Feedback

# re: 清空文件域的一种实现 2009-08-11 09:14 absolutej

问一个问题
提交的表单和上传的文件关系是什么?
也就是说表单里的内容跟上传的文件是不是附属关系,也就是说上传的文件依赖于表单的内容?简单的拿外键来理解

还是表单里填写的内容和上传的文件都是同一级关系,他们都是附属于某个东西  回复  更多评论   

# re: 清空文件域的一种实现 2009-08-11 09:23 feng

实际上文件域跟其他表单域是在一个表单的啦,但是我们可以借助JS控制提交到不同的ACTION处理咯,也就是其中的文件域是单独交给一个ACTION处理的,AJAX那种的话都是这样的@absolutej
  回复  更多评论   

# re: 清空文件域的一种实现 2009-08-11 09:26 字幕网站

没明白过来,表单和文件放到两个form中不行么?  回复  更多评论   

# re: 清空文件域的一种实现 2009-08-11 09:28 feng

可以 当然是可以啦 但是你会发现有时候我们会有特别的需求啥 如果放两个表单的话也会有布局的问题。  回复  更多评论   

# re: 清空文件域的一种实现 2009-08-11 09:54 隔叶黄莺

@feng
我想你只要把文件域的 disabled 属性设置为 true,是不是就可以达到你想要的结果,为 disabled 的表单域是不会提交给后台的。  回复  更多评论   

# re: 清空文件域的一种实现 2009-08-11 10:13 feng

提交前设置document.getElementById("upload").disabled="true"; 确实可以实现不提交文件域的功能  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航: