`
baining97
  • 浏览: 104336 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Strruts2+JQuery上传文件遇到的问题

阅读更多

使用JQuery的ajaxfileupload上传文件:

js:

function ajaxFileUpload(fileName){
	if(!btnEnabler){
		alert("文件上传中,请稍候...");
		return;
	}
	btnEnabler = false;
	
	//load the loading image
	$("#fileLoading")
		.ajaxStart(function(){
			$(this).show();
		})
		.ajaxComplete(function(){
			$(this).hide();
		});
	
	//file upload
	$.ajaxFileUpload({ 
		url:'<%=path%>/email/uploadAttach.action?fileName='+escape(escape(fileName)), 
		secureuri:false, 
		fileElementId:'oFile', 
		dataType: 'json', 
		success: function (data, status){
			allFilePath=allFilePath + data.msg + "<*>";
			showFile();

			//clear the file selection dialog box
			var obj = document.getElementById("oFile");
			obj.outerHTML=obj.outerHTML; 
			 
			btnEnabler = true;
		}, 
		error: function (data, status, e){
			alert("文件上传失败");

			//clear the file selection dialog box
			var obj = document.getElementById("oFile");
			obj.outerHTML=obj.outerHTML;  
			
			btnEnabler = true;
		}
	})
}

 页面部分:

 <input type="file" id="oFile" name="oFile" onchange="ajaxFileUpload(this.value);">
<font id="fileLoading" style="display:none"><img src="<%=path%>/resource/image/Emailimage/loading.gif" border="0" align="absmiddle">&nbsp;正在上传附件...</font>

 后台action:

private static final SimpleDateFormat fileNameSdf=new SimpleDateFormat("yyyyMMddHHmmss"); 
 
private File oFile;

 提供oFile的get/set方法;

 

public void uploadAttach() throws EmailException {
		System.out.println("uploadAttach() invoke..." );
		
		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		
    	String uploadPath = EmailUtil.getUploadPath();
    	String fileNamePrefix = fileNameSdf.format(new Date());  
    	String uploadFileName = Escape.unescape(request.getParameter("fileName"));
    	
    	String storeFileName = uploadPath + fileNamePrefix + uploadFileName;
        File storeFile = new File(storeFileName);   

        BufferedOutputStream bos = null;   
        BufferedInputStream bis = null;   
       
        try {   
            bos = new BufferedOutputStream(new FileOutputStream(storeFile));   
            bis = new BufferedInputStream(new FileInputStream(oFile));   
            int c;   
            while ((c = bis.read()) != -1) {   
                bos.write(c);   
                bos.flush();   
            }   
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write("{msg:'"+fileNamePrefix + uploadFileName+"'}");
        } catch (IOException e) {   
            e.printStackTrace();   
            throw new EmailException("上传邮件附件出错!");
        } finally {   
            try { bos.close(); } catch (IOException e) {e.printStackTrace();}
            try { bis.close(); } catch (IOException e) {e.printStackTrace();}
        }   
        
	}

 困惑了半天的问题就是上传小于2M的文件没问题,但是上传大于2M的文件ajax返回error,action没有执行,找了半天是Struts2的default.properties配置文件对上传文件的限制为2M,要修改这个限制可以再struts.xml中修改这一常量

<constant name="struts.multipart.maxSize" value="20000000" />

 问题就搞定了!

分享到:
评论

相关推荐

    前端+jQuery+实现烟花特效

    前端+jQuery+实现烟花特效前端+jQuery+实现烟花特效前端+jQuery+实现烟花特效前端+jQuery+实现烟花特效前端+jQuery+实现烟花特效前端+jQuery+实现烟花特效前端+jQuery+实现烟花特效前端+jQuery+实现烟花特效前端+...

    ajax+jquery+ashx实现上传文件

    在Web开发中,异步传输(Ajax)技术允许我们...通过这种组合使用Ajax、jQuery和ASHX的方式,我们可以创建一个高效且用户体验良好的文件上传系统,无需离开当前页面即可完成文件上传,从而提高了Web应用的交互性和效率。

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

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

    js+jquery 多文件上传

    在JavaScript和jQuery的世界里,多文件上传功能是一个常见的需求,特别是在网页交互中。"js+jquery 多文件上传"这个项目就是针对这一需求而设计的,它已经经过了修改,可以顺利部署到Eclipse开发环境中,并且具备了...

    Ext + Jquery Ext + Jquery Ext + Jquery

    Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery Ext + Jquery

    基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip

    基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统...

    .net + jquery 多文件上传

    标题中的".net + jquery 多文件上传"是一个技术主题,涉及到使用Microsoft的.NET框架与jQuery库来实现网页上的多文件上传功能。这是一个常见的需求,在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。...

    jQuery全能权威指南:jQuery Core+jQuery Plugin+jQuery UI+jQuery Mobile 源码

    还有由于容量的原因, 视频和web实例图片没有上传. 《jQuery全能权威指南:jQuery Core+jQuery Plugin+jQuery UI+jQuery Mobile》的阅读对象是具有一些HTML 、CSS和JavaScript知识的开发者,内容覆盖了jQuery知识...

    php+swfupload+jquery上传文件,仿163邮箱上传

    总结起来,实现"php+swfupload+jquery上传文件,仿163邮箱上传"的功能,涉及前端与后端的紧密配合,通过JavaScript库SWFUpload处理文件选择、上传和进度显示,借助PHP处理文件的接收、验证和存储,以及数据库的操作...

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

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

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

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

    struts2+jquery+ajax文件异步上传

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

    PHP多文件上传插件,PHP+jQuery+Ajax多图片上传

    2. **jQuery插件**:例如`jQuery.form.js`或`jQuery.fileupload.js`,它们提供了方便的API来处理多文件上传。这些插件可以监听文件选择事件,创建FormData对象,将文件数据附加到对象中,并通过Ajax发送到服务器。 ...

    echarts+jquery JS文件.zip

    在"echarts+jquery JS文件.zip"这个压缩包中,包含了两个核心的JavaScript文件:echarts.min.js和jquery.min.js。这两个文件是ECharts和jQuery库的压缩版本,它们在网页中起到了关键的作用。 首先,echarts.min.js...

    wijmo+jquery+jqueryui+jqgrid 最新开发包以及demo

    2. **jQuery UI**: 基于jQuery的jQuery UI库扩展了基本的jQuery功能,提供了一套完整的用户界面组件,包括对话框、拖放功能、日期选择器、进度条等。文件`jquery-ui-1.8.21.custom.zip`包含了一个定制版本的jQuery ...

    HTML+CSS+JavaScript+jQuery+Bootstrap等前端框架实现的前端案例.zip

    在webdemo-master中,JavaScript文件可能包含了对DOM(Document Object Model)的操作,以及各种交互逻辑。 jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理和动画制作。它提供了简便的API,如`$...

    jsp+JQuery多文件上传进度条显示(单选文件)

    2. **jQuery文件选择和上传**: 使用jQuery监听`change`事件,当用户选择文件后触发上传。我们可以使用`FormData`对象来封装文件数据,并通过Ajax向服务器发送POST请求。例如: ```javascript $('#fileInput')....

    jQuery_CHM_1.4.4.chm+jquery1.6

    jQuery_CHM_1.4.4.chm+jquery1.6jQuery_CHM_1.4.4.chm+jquery1.6jQuery_CHM_1.4.4.chm+jquery1.6jQuery_CHM_1.4.4.chm+jquery1.6jQuery_CHM_1.4.4.chm+jquery1.6jQuery_CHM_1.4.4.chm+jquery1.6jQuery_CHM_1.4.4.chm...

    .net+jQuery无刷新多文件上传

    在.NET和jQuery的世界里,无刷新多文件上传是一种提高用户体验的技术,它允许用户在不重新加载整个网页的情况下上传多个文件。这种技术的核心在于利用Ajax异步通信和前端库(如jQuery)来处理用户交互,同时借助后端...

    Struts2+Jquery+Ajax

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,用于构建可维护性高、结构...在实际开发过程中,还需要关注安全问题,如Struts2的安全漏洞,确保应用的稳定性和安全性。

Global site tag (gtag.js) - Google Analytics