使用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"> 正在上传附件...</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+实现烟花特效前端+...
在Web开发中,异步传输(Ajax)技术允许我们...通过这种组合使用Ajax、jQuery和ASHX的方式,我们可以创建一个高效且用户体验良好的文件上传系统,无需离开当前页面即可完成文件上传,从而提高了Web应用的交互性和效率。
struts2+ajax+jquery异步批量上传超大文件,单文件最大支持2G,一次文件数量,文件大小都可设置。简单明了。绝对可用,稍微懂点的就可以修改为自己所用。你值得拥有! 我会分享给大家更多更好的东西,希望支持!
在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
基于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 多文件上传"是一个技术主题,涉及到使用Microsoft的.NET框架与jQuery库来实现网页上的多文件上传功能。这是一个常见的需求,在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。...
还有由于容量的原因, 视频和web实例图片没有上传. 《jQuery全能权威指南:jQuery Core+jQuery Plugin+jQuery UI+jQuery Mobile》的阅读对象是具有一些HTML 、CSS和JavaScript知识的开发者,内容覆盖了jQuery知识...
总结起来,实现"php+swfupload+jquery上传文件,仿163邮箱上传"的功能,涉及前端与后端的紧密配合,通过JavaScript库SWFUpload处理文件选择、上传和进度显示,借助PHP处理文件的接收、验证和存储,以及数据库的操作...
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异步...
Struts2、jQuery和Ajax是Web开发中的三个关键组件,它们共同构成了文件异步上传的基础框架。这个项目是在MyEclipse环境下实现的一个简单的文件上传功能,让我们深入了解一下这些技术及其在文件上传中的应用。 首先...
2. **jQuery插件**:例如`jQuery.form.js`或`jQuery.fileupload.js`,它们提供了方便的API来处理多文件上传。这些插件可以监听文件选择事件,创建FormData对象,将文件数据附加到对象中,并通过Ajax发送到服务器。 ...
在"echarts+jquery JS文件.zip"这个压缩包中,包含了两个核心的JavaScript文件:echarts.min.js和jquery.min.js。这两个文件是ECharts和jQuery库的压缩版本,它们在网页中起到了关键的作用。 首先,echarts.min.js...
2. **jQuery UI**: 基于jQuery的jQuery UI库扩展了基本的jQuery功能,提供了一套完整的用户界面组件,包括对话框、拖放功能、日期选择器、进度条等。文件`jquery-ui-1.8.21.custom.zip`包含了一个定制版本的jQuery ...
在webdemo-master中,JavaScript文件可能包含了对DOM(Document Object Model)的操作,以及各种交互逻辑。 jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理和动画制作。它提供了简便的API,如`$...
2. **jQuery文件选择和上传**: 使用jQuery监听`change`事件,当用户选择文件后触发上传。我们可以使用`FormData`对象来封装文件数据,并通过Ajax向服务器发送POST请求。例如: ```javascript $('#fileInput')....
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的世界里,无刷新多文件上传是一种提高用户体验的技术,它允许用户在不重新加载整个网页的情况下上传多个文件。这种技术的核心在于利用Ajax异步通信和前端库(如jQuery)来处理用户交互,同时借助后端...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,用于构建可维护性高、结构...在实际开发过程中,还需要关注安全问题,如Struts2的安全漏洞,确保应用的稳定性和安全性。