struts2上传文件,JavaScript判断文件大小

项目需求:使用Ext的FormPanel,在formpanel里面定义一个Ext.ux.form.FileUploadField(由ExtJS官方提供的一个上传组件)。而服务端使用commons-fileupload.jar结合Struts2实现文件上传功能。 

commons-fileupload 初始状态下最大上传文件大小为2MB。如需要修改,可在struts.xml文件中添加: 

我这里使用最大上传文件大小为20MB。 

现在服务端可以说,已经可以实现上传了。主要在前台客户端。首先定义一个FileUploadField,用于选择上传文件

   

之后再FromPanel的items属性中引用,如

Js代码 
  1. var formpanel = new Ext.form.FormPanel({  
  2.        id:"fileform",  
  3.        .......//一些关于Formpanel的其他属性  
  4.        items:[fileIO_fileUploadField,....]})  

通过Formpanel提供的submit()方法提交到后台。 

这里主要说说,在执行formpanel.form.submit({...})之前,使用JavaScript对上传文件大小的判断,看代码

Js代码 
  1. getBrowserType = function(){  
  2.                             var Sys = {ie:false,firefox:false,chrome:false};  
  3.                             var ua = window.navigator.userAgent;  
  4.                             if (ua.indexOf("MSIE")>=1){  
  5.                                 Sys.ie = true;  
  6.                             }else if(ua.indexOf("Firefox")>=1){  
  7.                                 Sys.firefox = true;  
  8.                             }else if(ua.indexOf("Chrome")>=1){  
  9.                                 Sys.chrome = true;  
  10.                             }  
  11.                               
  12.                             return Sys;  
  13.                         }  
  14.                         getFileSize = function(obj){  
  15.                             var filesize = 0;  
  16. //                          alert(obj.value);  
  17.                             var Sys = getBrowserType();  
  18.                             if(Sys.ie){  
  19.                                 //IE7.0、IE8 在上传表单上,显示如“C:/fakepath/[文件名]”  
  20.                                 //需要获得正确的文件物理地址value  
  21.                                 var value;  
  22.                                 var agent = window.navigator.userAgent  
  23. //                              alert(agent.toString());  
  24.                                 var IE7 = agent.indexOf("MSIE 7.0") != -1;  
  25.                                 var IE8 = agent.indexOf("MSIE 8.0") != -1;  
  26.                                 if(IE7 || IE8){  
  27.                                     obj.select();  
  28.                                     value = document.selection.createRange().text;  
  29.                                 }else{  
  30.                                     value = Object.value;  
  31.                                     var img = new Image();  
  32.                                     img.dynsrc = value;  
  33.                                     return filesize = img.fileSize;  
  34.                                 }  
  35.                                 window.oldOnError = window.onerror;  
  36.                                 window.onerror = function (err) {  
  37.                                   if (err.indexOf('utomation') != -1) {  
  38.                                     return filesize = 0;  
  39.                                   }  
  40.                                 };  
  41.                                 var fso = null;  
  42.                                 try{  
  43.                                     fso = new ActiveXObject('Scripting.FileSystemObject');  
  44.                                     var file = fso.GetFile(value);  
  45.                                     window.onerror = window.oldOnError;  
  46.                                     return filesize =  file.Size;  
  47.                                 }catch(err){  
  48.                                     Ext.Msg.alert("提示","您的IE浏览器暂时不能计算上传的文件大小。请上传小于20MB的文件!" +  
  49.                                             "/n/n解决方案:工具——>Internet选项——>安全——>可信站点——>站点,添加本系统站点")  
  50.                                     return filesize =0;  
  51.                                 }  
  52.                                   
  53.                                   
  54.                             }else if(Sys.firefox || Sys.chrome){  
  55.                                 return filesize = obj.files[0].fileSize;  
  56.                             }else return filesize = 0;  
  57.                               
  58.                         }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值