`
kjkhi
  • 浏览: 185409 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

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

commons-fileupload 初始状态下最大上传文件大小为2MB。如需要修改,可在struts.xml文件中添加:
<constant name="struts.multipart.maxSize" value="20971520" />
我这里使用最大上传文件大小为20MB。

现在服务端可以说,已经可以实现上传了。主要在前台客户端。首先定义一个FileUploadField,用于选择上传文件
var fileIO_fileUploadField = new Ext.ux.form.FileUploadField({
				id:"fileIO_fileUploadField",
				name:"file",
				fieldLabel:"上传文件",
				buttonText:"浏览...",
				allowBlank:false,
				emptyText:"小于20MB的文件"
			});
之后再FromPanel的items属性中引用,如
var formpanel = new Ext.form.FormPanel({
       id:"fileform",
       .......//一些关于Formpanel的其他属性
       items:[fileIO_fileUploadField,....]})
通过Formpanel提供的submit()方法提交到后台。

这里主要说说,在执行formpanel.form.submit({...})之前,使用JavaScript对上传文件大小的判断,看代码
getBrowserType = function(){
							var Sys = {ie:false,firefox:false,chrome:false};
							var ua = window.navigator.userAgent;
							if (ua.indexOf("MSIE")>=1){
								Sys.ie = true;
							}else if(ua.indexOf("Firefox")>=1){
								Sys.firefox = true;
							}else if(ua.indexOf("Chrome")>=1){
								Sys.chrome = true;
							}
					        
					        return Sys;
						}
						getFileSize = function(obj){
							var filesize = 0;
//							alert(obj.value);
							var Sys = getBrowserType();
							if(Sys.ie){
								//IE7.0、IE8 在上传表单上,显示如“C:\fakepath\[文件名]”
								//需要获得正确的文件物理地址value
								var value;
								var agent = window.navigator.userAgent
//								alert(agent.toString());
								var IE7 = agent.indexOf("MSIE 7.0") != -1;
								var IE8 = agent.indexOf("MSIE 8.0") != -1;
								if(IE7 || IE8){
									obj.select();
									value = document.selection.createRange().text;
								}else{
									value = Object.value;
									var img = new Image();
									img.dynsrc = value;
									return filesize = img.fileSize;
								}
								window.oldOnError = window.onerror;
							    window.onerror = function (err) {
							      if (err.indexOf('utomation') != -1) {
							        return filesize = 0;
							      }
							    };
							    var fso = null;
							    try{
							    	fso = new ActiveXObject('Scripting.FileSystemObject');
							   		var file = fso.GetFile(value);
							   		window.onerror = window.oldOnError;
							    	return filesize =  file.Size;
							    }catch(err){
							    	Ext.Msg.alert("提示","您的IE浏览器暂时不能计算上传的文件大小。请上传小于20MB的文件!" +
							    			"\n\n解决方案:工具——>Internet选项——>安全——>可信站点——>站点,添加本系统站点")
							    	return filesize =0;
							    }
						    	
							    
							}else if(Sys.firefox || Sys.chrome){
								return filesize = obj.files[0].fileSize;
							}else return filesize = 0;
							
						}
附件提供了FileUploadField组件及本实例代码
分享到:
评论

相关推荐

    struts2 图片上传,图片大小,图片格式

    在Struts2中,可以通过配置`struts.xml`或`struts.properties`文件来设置单个文件和总文件大小的限制。例如: ```xml &lt;constant name="struts.multipart.maxSize" value="10485760"&gt; ``` 这里设置的值是10MB,可以...

    struts实现上传图片

    为了实现图片上传,需要在配置文件中注册相应的Action,并设置上传配置,如最大文件大小、文件存储位置等。 #### 3. Action代码 Action类是Struts框架的核心组件之一,负责处理请求并返回响应。在图片上传的场景下...

    CKEditor实现图片上传(使用Struts2)

    在Web开发中,CKEditor是一款常用的富文本编辑器,它为用户提供了一个类似Word的...注意,在实际项目中,我们还需要考虑文件大小限制、文件类型检查、错误处理以及权限控制等安全问题,以确保系统的稳定性和安全性。

    文件上传和进度条

    这个拦截器会确保文件大小不超过设定的限制,并处理文件上传的细节。 ```xml &lt;interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/&gt; ...

    jsp实现文件上传功能

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许开发者在HTML页面中嵌入Java代码。...在实际开发中,为了提高效率和可维护性,通常会使用Spring MVC、Struts2等框架来处理文件上传。

    struts1标签库详解

    Logic Tags 是 Struts 中的逻辑标签库,包含的标签可以用来进行逻辑判断、集合迭代和流程控制。 * logic:equal:判断两个值是否相等。 * logic:forward:将请求转发到另一个.action。 * logic:iterate:迭代一个...

    Struts2防止重复提交的解决方案

    - 文件类型与大小控制:通过客户端JavaScript、Action中逻辑判断、拦截器实现。 #### 五、总结 综上所述,Struts2提供了多种手段来防止表单的重复提交,开发者可以根据具体的应用场景选择合适的方法。同时,Struts...

    ssh+javaScript

    - `文件上传.txt`:在Java EE中,文件上传通常通过Servlet API或者Struts2的File Upload拦截器来处理。开发者需要处理文件的临时存储、大小限制、类型检查等问题,确保上传过程的安全性和稳定性。 4. **日期控件的...

    java图片上传源代码

    Struts2提供了丰富的功能,包括处理表单提交,拦截器,以及JSON(JavaScript Object Notation)支持,使数据交换更便捷。 标题中的“java图片上传源代码”指的是使用Java编程语言实现的图片上传功能。通常,这个...

    plupload:使用plupload上传大文件

    2. **分块上传(Chunking)**:对于大文件上传,Plupload 使用分块上传策略,将大文件切割成小块并发上传,提高了上传效率并降低了网络中断的影响。这种技术也使得断点续传成为可能。 3. **断点续传**:如果上传...

    华为面试题

    项目中实现时,需要处理文件的临时存储、文件大小限制、错误处理和安全问题。 【Spring框架】 Spring是企业级应用的核心框架,它的注解用于简化配置,如@Service、@Repository和@Controller等。事务控制通常使用@...

    java面试题综合

    63. Struts2条件判断:使用OGNL表达式,如s:if、s:else等。 64. Ext基于ExtJS,JSON格式如:{"name":"John", "age":30, "city":"New York"}。 65. Class与Student的Hibernate配置:创建映射文件,定义属性和关联...

Global site tag (gtag.js) - Google Analytics