1.struts2本身不支持异步上传文件,需要相应的插件支持,这里用jquery.js和jquery.form.js来实现。
jquey.form.js版本: 3.42.0
jquey.js版本:1.7.2
刚开始用的jquery.form.js做上传时用的2012年的一个老版本,发现在ie,firefox,google兼容性方面很不好处理,换成这个最新的版本后还是可以处理的。
2.这里主要贴下异步上传的兼容性处理代码,其他的后端代码可以下载附件查看。
response.reset(); response.setContentType("text/html"); pw = response.getWriter(); pw.print("<textarea>"+jsonData.toString()+"</textarea>");
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>上传页面</title> <script type="text/javascript" src='<s:url value="/js/jquery-1.7.2.min.js"></s:url>'></script> <script type="text/javascript" src='<s:url value="/js/jquery.form.js"></s:url>'></script> <script type="text/javascript"> function postFile() { $(document).ready(function() { var num=0; $("input[type=file]").each(function(i,n){ if($(n).val() && $(n).val() != ''){ num++; return false; } }); if(num == 0){ alert("请选择要上传的文件!"); return; } $("#fileForm").ajaxSubmit({ type : 'post', url : 'upload/fileupload!doMultiUpload', success : function(data) { if(data.success.length > 0){ alert("『"+data.success.join()+"』上传成功!"); } if(data.error.length > 0){ alert("『"+data.error.join()+"』上传失败!"); } $("#fileForm").resetForm(); }, error : function(xhr, ts, et){ alert("上传失败,请检查文件类型和大小!"); }, dataFilter : function(data,type){ if(!$.browser.msie && type === "json"){ return data.replace("<textarea>","").replace("</textarea>",""); }else{ return $.parseJSON(data); } }, dataType:'json' }); }); } </script> </head> <body> <s:form id="fileForm" name="fileForm" enctype="multipart/form-data" method="post" > <%-- <s:file name="upload" label="上传文件"></s:file> --%> <s:file id="multi1" name="multi" label="上传文件"></s:file> </br> <s:file id="multi2" name="multi" label="上传文件"></s:file> </br> <%-- <s:submit value="提交"></s:submit> --%> <input type="button" value="提交" onclick="postFile()"/> </s:form> </body>
这里主要是为了说明,用jquery做异步上传中的问题,其中代码是解决的方法。
3.为什么这样解决呢?
看下面:
在正常情况下,Firefox和google都可以使用而IE不可以使用,因为在IE中当java中response.setContentType("text/json"); 返回数据根本不走回调方法。
查看源代码发现:
因此就这java中返回数据时添加了<textarea></textarea>。
这样处理后发现在IE中可以了但是在其他浏览器中又不行了。
因此就写了个dataFilter做了处理这样就都可以了。
当然也可以直接写个dataFilter加上<textarea></textarea>,而不需要在java中添加。
但是这样没试过,理论上是可以的,有兴趣的可以自己看看。
相关推荐
网上有些这样的例子,但是下了几个都没有跑起来,哎,希望那些发文章的人要发就发全的,别发个半生不熟的。... 现在自己整理了一个Struts2+ExtJS2实现文异步文件上传,没法上传图片无法看到效果,直接上源码吧。
Struts2、jQuery和Ajax是Web开发中的三个关键组件,它们共同构成了文件异步上传的基础框架。这个项目是在MyEclipse环境下实现的一个简单的文件上传功能,让我们深入了解一下这些技术及其在文件上传中的应用。 首先...
在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...
Struts2是一个非常流行的... Struts2异步上传结合了Struts2框架、jQuery、Ajax、JSON插件和文件处理策略,为用户提供了无刷新的文件上传体验。理解并熟练掌握这些组件和技术,对于开发高效、安全的Web应用至关重要。
下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用Flash技术提供了一个高级的文件上传体验。它的主要特性包括: 1. **多文件选择**...
在Struts2框架下实现Uploadify多文件上传,我们需要考虑以下几个关键知识点: 1. **Struts2 Action配置**: 在Struts2中,你需要创建一个Action类来处理文件上传请求。这个Action类需要继承`org.apache.struts2....
此外,为了提高用户体验,可以考虑使用异步上传,显示进度条,以及提供取消上传的功能。 总之,Struts1实现文件批量上传涉及前端表单设计、ActionForm的定义、Struts配置以及后台Action的处理。通过这些步骤,我们...
这个【标题】"struts2带进度条的异步上传"指的是使用Struts2框架,结合JSON和jQuery技术来实现在用户界面上展示文件上传进度的功能。 【描述】中的关键信息点解构如下: 1. **Struts2.2.3**:这是Struts2的一个...
在Struts2中,文件上传主要依赖于`org.apache.struts2.components.FileUpload`组件,这个组件是基于Commons FileUpload库实现的,它能够处理multipart/form-data类型的HTTP请求,这是文件上传所必需的格式。...
在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...
下面将详细阐述如何使用Struts2来实现文件上传功能。 1. **Struts2文件上传组件** Struts2框架集成了一个名为`struts2-convention-plugin`的插件,它提供了文件上传的支持。主要依赖于`Commons FileUpload`和`...
总结起来,使用Struts实现文件上传下载涉及前端表单设计、后端处理逻辑、文件存储策略以及安全控制等多个方面。在实践中,我们还需要考虑到性能优化和用户体验提升,例如使用异步上传、进度条展示等技术。
在Java Struts2框架中实现文件上传进度条显示,主要涉及到的技术点包括Struts2的文件上传、Ajax异步通信以及前端进度条组件的使用。下面将详细讲解这些知识点。 首先,Struts2的文件上传功能是通过Struts2提供的`...
此外,对于大文件上传,可能需要考虑分块上传和异步上传以优化用户体验。 总结,Struts2的文件上传功能通过Action类、配置文件、Action字段和表单HTML页面的配合实现。理解并熟练运用这些知识点,能帮助开发者在...
在本文中,我们将深入探讨如何使用Struts2来实现压缩文件的上传功能,并将其保存到Tomcat服务器上的特定目录。 首先,我们需要在Struts2项目中引入必要的依赖。这通常包括Struts2的核心库、文件上传插件和其他可能...
struts2+ajax+jquery异步批量上传超大文件,单文件最大支持2G,一次文件数量,文件大小都可设置。简单明了。绝对可用,稍微懂点的就可以修改为自己所用。你值得拥有! 我会分享给大家更多更好的东西,希望支持!
在这个场景中,“Struts2+ajax+json异步上传图片回显”是指利用Struts2框架,通过Ajax技术实现图片的异步上传,并通过JSON进行数据交互,最终实现在页面上即时回显上传的图片。 首先,让我们理解每个组件的作用: ...
在本文中,我们将深入探讨如何使用`ajaxFileUpload`与`Struts2`框架结合,实现多文件上传功能。这个示例源码提供了一个实用的方法,使得用户可以在不刷新整个页面的情况下,上传多个文件,提高了用户体验。 首先,`...
Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...