项目中用到uploadify,需要实现提交表单同时将附件上传至服务器, 'auto': 属性就需要改为 true,上传完成自动保存,这时候如果想取消已上传到队列的附件需要重新写,网上也看了一些帖子,挺好的,从跟上解决问题,思路大概是先取消时清除input里面的文件名称,接下来调用onCancel事件(事件名称不对,可以查一下API),在该事件里面实现一个清除队列的方法,删除附件信息。当然也可以找一些其他的方式,实现该功能,下面是实现思路:
1、修改auto为false,让他手动执行上传
2、写一个input控件用于存放上传的附件名称,隐藏原来的input file,具体见红色部分。
<div class="h_contdj">
<font>附件:</font>
<input id="tempfilename" name="tempfilename" style="width: 610px; margin-top: 3px; float: left; margin-right: 3px" />
<input id="filename" name="filename" readonly="readonly" style="display:none;width: 455px; margin-top: 3px; float: left; margin-right: 3px" />
<input type="file" name="uploadify" id="uploadify" style="float: left; width: 280px;" />
</div>
3、根据选择事件,调用自定义的方法
'onSelect': uploadify_onBrowse,(方法后面有定义)
4、自定义方法实现给前端显示文件名称
var filenamesdata = "";
var uploadify_onBrowse = function (event) {
filenamesdata += event.name+" ";
document.getElementById("tempfilename").defaultValue = filenamesdata;
}
5、执行“取消”按钮时清除前端的文件名,通过取消事件调用该方法即可,代码未写。
6、提交时执行上传方法和自己的表单两步即可。
总结:该方式的好处就是简单容易理解,但是对上传的附件进度一直处于未上传方式,后期优化好了在共享所有代码。
建议还是使用官方的方式,逐个清除队列。