ExtJs4 多附件上传组件

之前看了czpae86关于多附件上传的组件UploadPanel(http://czpae86.iteye.com/blog/1728408),自己下载后发现运行一直失败,
主要有以下两个问题:
1.后台无法接收到参数;
2.处理完成第一个问题后可以上传,但是上传完成后关闭窗口后会报错。
通过查看源代码得知第一个问题是因为upload_start_handler方法中调用了setFilePostName方法,这样导致后台的接收参数会动态变化(根据上传文件的名字)。所以这个方法最好去掉,我的这个方法如下:
var me = this.settings.custom_settings.scope_handler;
me.down('#cancelBtn').setDisabled(false);

然后在getSWFConfig的return中增加如下配置:
file_post_name: 'file'

这样我后台的接收名字就固定为file。具体可以参照uploadPanel中的后台代码。
第二个问题比较偶然,onRemove方法刚好和extjs默认销毁调用的方法重名导致。解决方案就是修改该方法的名字,例如onRemoveAll.另外重写beforeDestroy方法,将store置空:
beforeDestroy: function() {
var me = this;
me.store.removeAll();
Ext.destroy(
me.placeholder,
me.ghostPanel
);
me.callParent();
}


根据以上问题修改后的代码见附件。需要把uploadPanel中的Ext.define后的XX修改为自己的项目名称。UploadPanel中的upload_url修改为实际的上传action,uploadSuccess方法中从后台的返回值根据你的实际POJO类修改。

调用的话使用如下代码:
var uploadWin = Ext.create('XX.view.ux.UploadWin',{
callback: function(file){
if (file != null){
store.add(file);
}
uploadWin.close();
},
scope: this
}).show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值