`

struts2实现多文件异步上传

阅读更多

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中添加。

但是这样没试过,理论上是可以的,有兴趣的可以自己看看。

 

  • 大小: 81.6 KB
分享到:
评论

相关推荐

    Extjs+Struts2实现异步文件上传

    网上有些这样的例子,但是下了几个都没有跑起来,哎,希望那些发文章的人要发就发全的,别发个半生不熟的。... 现在自己整理了一个Struts2+ExtJS2实现文异步文件上传,没法上传图片无法看到效果,直接上源码吧。

    struts2+jquery+ajax文件异步上传

    Struts2、jQuery和Ajax是Web开发中的三个关键组件,它们共同构成了文件异步上传的基础框架。这个项目是在MyEclipse环境下实现的一个简单的文件上传功能,让我们深入了解一下这些技术及其在文件上传中的应用。 首先...

    struts2异步多文件上传和下载

    在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...

    struts2异步上传

    Struts2是一个非常流行的... Struts2异步上传结合了Struts2框架、jQuery、Ajax、JSON插件和文件处理策略,为用户提供了无刷新的文件上传体验。理解并熟练掌握这些组件和技术,对于开发高效、安全的Web应用至关重要。

    swfuplaod+struts2实现多文件上传

    下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用Flash技术提供了一个高级的文件上传体验。它的主要特性包括: 1. **多文件选择**...

    Struts2实现Uploadify多文件上传

    在Struts2框架下实现Uploadify多文件上传,我们需要考虑以下几个关键知识点: 1. **Struts2 Action配置**: 在Struts2中,你需要创建一个Action类来处理文件上传请求。这个Action类需要继承`org.apache.struts2....

    struts1实现的文件批量上传

    此外,为了提高用户体验,可以考虑使用异步上传,显示进度条,以及提供取消上传的功能。 总之,Struts1实现文件批量上传涉及前端表单设计、ActionForm的定义、Struts配置以及后台Action的处理。通过这些步骤,我们...

    struts2带进度条的异步上传

    这个【标题】"struts2带进度条的异步上传"指的是使用Struts2框架,结合JSON和jQuery技术来实现在用户界面上展示文件上传进度的功能。 【描述】中的关键信息点解构如下: 1. **Struts2.2.3**:这是Struts2的一个...

    Struts2实现文件的上传下载

    在Struts2中,文件上传主要依赖于`org.apache.struts2.components.FileUpload`组件,这个组件是基于Commons FileUpload库实现的,它能够处理multipart/form-data类型的HTTP请求,这是文件上传所必需的格式。...

    struts2多文件的上传

    在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...

    Struts2实现文件上传功能

    下面将详细阐述如何使用Struts2来实现文件上传功能。 1. **Struts2文件上传组件** Struts2框架集成了一个名为`struts2-convention-plugin`的插件,它提供了文件上传的支持。主要依赖于`Commons FileUpload`和`...

    struts实现的文件上传下载功能

    总结起来,使用Struts实现文件上传下载涉及前端表单设计、后端处理逻辑、文件存储策略以及安全控制等多个方面。在实践中,我们还需要考虑到性能优化和用户体验提升,例如使用异步上传、进度条展示等技术。

    java struts2实现文件上传进度条显示

    在Java Struts2框架中实现文件上传进度条显示,主要涉及到的技术点包括Struts2的文件上传、Ajax异步通信以及前端进度条组件的使用。下面将详细讲解这些知识点。 首先,Struts2的文件上传功能是通过Struts2提供的`...

    Struts2之struts2文件上传详解案例struts011

    此外,对于大文件上传,可能需要考虑分块上传和异步上传以优化用户体验。 总结,Struts2的文件上传功能通过Action类、配置文件、Action字段和表单HTML页面的配合实现。理解并熟练运用这些知识点,能帮助开发者在...

    Struts2实现压缩文件上传

    在本文中,我们将深入探讨如何使用Struts2来实现压缩文件的上传功能,并将其保存到Tomcat服务器上的特定目录。 首先,我们需要在Struts2项目中引入必要的依赖。这通常包括Struts2的核心库、文件上传插件和其他可能...

    struts2+ajax+jquery异步批量上传超大文件

    struts2+ajax+jquery异步批量上传超大文件,单文件最大支持2G,一次文件数量,文件大小都可设置。简单明了。绝对可用,稍微懂点的就可以修改为自己所用。你值得拥有! 我会分享给大家更多更好的东西,希望支持!

    Struts2+ajax+json异步上传图片回显

    在这个场景中,“Struts2+ajax+json异步上传图片回显”是指利用Struts2框架,通过Ajax技术实现图片的异步上传,并通过JSON进行数据交互,最终实现在页面上即时回显上传的图片。 首先,让我们理解每个组件的作用: ...

    ajaxFileUpload+struts2实现多文件上传(源码)

    在本文中,我们将深入探讨如何使用`ajaxFileUpload`与`Struts2`框架结合,实现多文件上传功能。这个示例源码提供了一个实用的方法,使得用户可以在不刷新整个页面的情况下,上传多个文件,提高了用户体验。 首先,`...

    struts2+jquery多文件上传显示进度条,可直接运行(非常强大)

    Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...

Global site tag (gtag.js) - Google Analytics