Ext +Struts2 的文件上传

反正 搞 EXT 很久了。 说 文件上传也很久了。 原来去 EXT 的论坛找了个 现成的组件,也很方便。 不过感觉 不适合小的需求。对用户来说,操作也不是很直观。
这回有时间,搞搞上传了。 去找了个半成品,改改还是OK 了。。。
先看图片吧。
[img]http://qianlei007.iteye.com/upload/picture/pic/38462/11c8a44c-24a4-37ac-a3ef-723bc2d79770.jpg[/img]
上传文件 的 textfield ,添加了一个鼠标焦点事件。 点击的话,弹出上传窗口。

[img]http://qianlei007.iteye.com/upload/picture/pic/38464/67251304-797c-3053-b381-acd606f617ec.jpg[/img]

剩下就是上传文件的过程了, 用struts2 自带的上传组件。

[img]http://qianlei007.iteye.com/upload/picture/pic/38466/05b30831-59db-3149-848d-1f9b5b5ea425.jpg[/img]


贴贴关键代码吧:



logger.debug("++++++++"+uploadFileName);


if (uploadFileName.getBytes().length != uploadFileName.length()) {
uploadFileName=System.currentTimeMillis()+"";
}




this.savePath =Thread.currentThread().getContextClassLoader().getResource("").getPath();


savePath=savePath.substring(1, savePath.length()-16)+uploadFileName;

logger.debug(savePath);

File newPath = new File(savePath);

Tools.CopyFile(upload,newPath);


this.responseWrite("{\"success\":true,\"msgs\":'" +uploadFileName+ "'}");

logger.debug("{\"success\":true,\"msg\":\"" +uploadFileName+ "\"}");


return null;


在界面中,我们可以获取到 File 对象和上传的文件名称。 然后,就是你根据上传的的文件进行整理了。当然,这里还能根据 文件后缀进行过滤, 暂时没这样的要求,就没写判断。这里判断了一下中文文件名称。

要注意的是, struts2上传文件大小, 拦截器默认的是 2M 左右。 如果需要的话,可以自己在 sturts.xml 里面修改。
    <constant name= "struts.multipart.maxSize" value="10242880"></constant> 


前台界面,也没什么难度,都是很简单的控件,当然,我是抄袭别人的了(懒的快发霉了,不想发明轮子)。
主要的也就是这么一段:

var formUpload = new Ext.form.FormPanel({   

baseCls: 'x-plain',

labelWidth: 80,

fileUpload:true,

defaultType: 'textfield',

items: [{

xtype: 'textfield',

fieldLabel: '文 件',

name: 'upload',

inputType: 'file',

allowBlank: false,

blankText: '请上传文件',

anchor: '90%'

}]

});


在这个过程中,发现一个奇怪的问题。就是上传完成以后,返回的json..
this.responseWrite("{\"success\":true,\"msgs\":'" +uploadFileName+ "'}");
代码里面就这样写的, 可是通过调试,前台多了一个 <per> 标签。 json一直报错,郁闷的很,后来 把这个东西给过滤了,还不知道为什么产生这个东西。

代码整理好了就发上来。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值