最近写Ext上传文件功能时发现Ext并没有提供该组件.网上搜索找到个Ext.ux.UploadDialog.Dialog 的控件.用于上传多个文件.但是该组件已经封装在一个window中了.在实际项目中,需要的是一个可以嵌入在FormPanel中的上传控件.一个类似html的表单上传组件.在写的过程中也遇到一些问题.在此,写篇文章与大家交流.
解决方式:
1.使用<input type=file/>标签,设置按钮的样式,使其与ext按钮样式相似.这是最方便的途径,但是,后来发现这个标签是个很特殊的组件,不能设置其按钮样式属性.只能另想办法.
2.使用<input type=file/>标签,将其隐藏.使用Ext按钮和文本框替代.单击Ext按钮时,通过javascript代码引发file的相关事件,打开文件选择对话框,并将选中的文件路径显示在Ext文本框中.达到替换的目的.按照此想法实施.可以达到效果.但是,提交表单时,在IE下,出现"错误拒绝"的提示.后来,查阅资料显示,file又是个特殊的组件,涉及到本机的文件.通过js代码是不能提交表单的.必须明确的点击file的按钮才能提交.此办法失败.
3.继续查阅资料后,前人提出了解决方式.将file的positon设为absolute,将其按钮定位与Ext按钮的位置一致.并将file设为透明,从而,显示出Ext的按钮.单击该按钮时,实际上是file的按钮.最终解决了该问题.实现了Ext文件的上传.可以在http://download.csdn.net/source/526222下载该组件,查看代码.感谢前人留给我们宝贵的经验.