struts2 ajax校验,struts2+jquery+ajax实现上传&&校验实例

本文介绍了如何使用Ajax和jQuery实现文件无刷新上传,包括前端js代码、HTML页面和Struts2后端处理。重点是引入AjaxFileUploader插件,并通过Struts2 Action进行文件接收和验证。同时,文章还提到了文件大小、类型限制以及错误处理机制。
摘要由CSDN通过智能技术生成

一直以为ajax不能做上传,直到最近看了一些文章。需要引入AjaxFileUploaderV2.1.zip,下载链接:http://pan.baidu.com/s/1i3L7I2T

代码和相关配置如下:

js代码:

//ajax 无刷新上传文件

function ajaxFileUpload() {

//判断是否选择文件

if($("#uploadFile").val() == null || $("#uploadFile").val()==""){

alert("请选择需要上传的文件!");

return;

}

//判断后缀名

var filepath=$("#uploadFile").val();

var extStart=filepath.lastIndexOf(".");

var ext=filepath.substring(extStart,filepath.length).toUpperCase();

if(".xls".toUpperCase() !=ext ){

alert("只能上传Excel97-2003工作簿文件(xls)");

return false;

}

//判断文件大小

var file = $('#uploadFile').get(0).files[0];

if (file) {

var fileSize = 0;

if (file.size > 2*1024 * 1024) {

alert("上传的文件大小不能超过2MB,请核对后重试!");

return false;

}

}

$("#loading")

.ajaxStart(function () {

$(this).show();

})//开始上传文件时显示一个图片

.ajaxComplete(function () {

$(this).hide();

});//文件上传完成将图片隐藏起来

$.ajaxFileUpload

(

{

url: '/server/doUploadAndInsert.action',//用于文件上传的服务器端请求地址

secureuri: false,//一般设置为false

fileElementId: 'uploadFile',//文件上传空间的id属性

dataType: 'json',//返回值类型 一般设置为json

success: function (result) {

var msgBean = result;

alert(msgBean.msgText);

}

});

return false;

}

需要导入jquery星河ajaxfileupload.js,html代码:

action="/server/doUploadAndInsert.action">

选择文件(*.xls格式)

value="导入" οnclick="return ajaxFileUpload();"/>

struts2 配置:

uploadTemp

后端struts2 action代码:

// 上传文件所需属性

private String title;

private File uploadFile;

private String uploadFileContentType;

private String SavePath;

private String uploadFileFileName;

Log log = LogFactory.getLog(this.getClass());public String doUploadAndInsert() throws Exception {

PrintWriter out = null;

MsgBean msg = new MsgBean();

try {

HttpServletResponse response = ServletActionContext.getResponse();

response.setContentType("text/html;charset=utf-8");

out = response.getWriter();

if(getUploadFile().length()>2097152){

msg.setMsgName("SysDefectAction_doDefUploadAndInsert_fail");

msg.setMsgText(getUploadFileFileName()+"上传失败,文件太大。\r\n请不要上传超过2048KB的文件");

out.write(JSON.toJSONString(msg));

out.flush();

return null;

}

//后缀名限制

String suffixName = getUploadFileFileName().split("\\.")[1];

if(!"xls".equalsIgnoreCase(suffixName)){

msg.setMsgName("SysDefectAction_doDefUploadAndInsert_fail");

msg.setMsgText(getUploadFileFileName()+"上传失败,错误的文件格式!");

out.write(JSON.toJSONString(msg));

out.flush();

return null;

}

UUID uuid = UUID.randomUUID();

ServletContext servletContext = (ServletContext) ActionContext.getContext().get(ServletActionContext.SERVLET_CONTEXT);

String rootPath = servletContext.getRealPath("/");

File folder = new File(rootPath + "\\" + getSavePath());

if (!folder.exists()) {

folder.mkdir();

}

FileOutputStream fileOutputStream = new FileOutputStream(rootPath + "\\" + getSavePath() + "\\" + uuid+"_"+getUploadFileFileName());

FileInputStream fileInputStream = new FileInputStream(getUploadFile());

byte[] buffer = new byte[1024];

int len = 0;

while ((len = fileInputStream.read(buffer)) > 0) {

fileOutputStream.write(buffer, 0, len);

}

fileInputStream.close();

log.info("上传文件接收成功,文件存放全路径为:" + rootPath + "/" + uuid+"_"+getUploadFileFileName());

} catch (Exception e){

msg.setMsgName("SysDefectAction_doDefUploadAndInsert_fail");

msg.setMsgText(getUploadFileFileName()+"上传失败,"+e.getMessage());

out.write(JSON.toJSONString(msg));

out.flush();

} finally{

out.close();

return null;

}

}

jQuery.uploadify文件上传组件实例讲解

1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

兼容ie的jquery ajax文件上传

Ajax文件上传插件很多,但兼容性各不一样,许多是对ie不兼容的,另外项目中是要求将网页内容嵌入到桌面端应用的,这样就不允许带flash的上传插件了,如:jquery uploadify...悲剧 对 ...

Struts2 使用Jquery+ajax 文件上传

话不多说 直接上代码 前台js: var formData = new FormData(); formData.append("file1",$("#file1&quo ...

struts2 jquery ajaxFileUpload 异步上传文件

网上搜集的,整理一下. 一.ajaxFileUpload 实现异步上传文件利用到了ajaxFileUpload.js这个文件,这是别人开发的一个jquery的插件,可以实现文件的上传并能够和strut ...

ASP.NET 异步Web API + jQuery Ajax 文件上传代码小析

该示例中实际上应用了 jquery ajax(web client) + async web api 双异步. jquery ajax post $.ajax({ type: "POST&q ...

简单的jquery ajax文件上传功能

/* * 图片上传 * 注意如果不加processData:false和contentType:false会报错 */ function uploadImage(image) { var imageF ...

Jquery Ajax异步上传

$(function(){ $('#filephoto').change(function(imgFile){ console.log(imgFile) var file ...

jQuery Ajax方式上传文件实现暂停或取消上传

未上传时要实现取消,很简单... 但如果用户点击了上传,并加载了进度信息... 2017-05-04再次改进.在上传过程中用户可以按 Esc 来取消上传(取消当前上传,或者是全部上传)... 也可以在 ...

jQuery ajax上传文件实例

jQuery ajax上传文件实例

随机推荐

jquery插件文件上传

文件上传有很多jQuery插件,一般我最为常用的就是uploadify.js和ajaxfileupload.js,二者都是以file标签为依托,前者需要在页面初始化时就渲染插件,比较适合单纯的文件上传 ...

P/Invoke .NET调用win32API

项目:无线无源测温软件系统 项目中,用到使用P/Invoke在.NET调用win32API,实现对ini配置文件的读写功能!因为有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一 ...

MySQl之最全且必会的sql语句

创建一个名称为mydb1的数据库,如果有mydb1数据库则直接使用,如果无则创建mydb1数据库 create database if not exists mydb1; create databas ...

django csrftoken

CSRF(跨站请求伪造) 背景知识:浏览器在发送请求的时候,会自动带上当前域名对应的cookie内容,发送给服务端,不管这个请求是来源A网站还是其它网站,只要请求的是A网站的链接,就会带上A网站的co ...

Linux 常用系统工作命令

1.echo 用于输出字符串或者变量的值 2.date 显示及设置系统的时间和日期,格式为 “date [选项][+指定格式]”,输入以“+”号开头的参数,及可按照指定格式输出 date命令参数及作用 ...

JavaScript 对象(上)

简述: 1.是 JavaScript 的基本类型 2.是一种复合值,可通过名字访问这些值 3.可看作属性的无序集合,每个属性都是一个名/值对(属性名是字符串或标识符) 4.可以从一个称为原型的对象继承 ...

nohup top & 问题: top: failed tty get

执行 nohup top & nohup.out 显示 top: failed tty get +++++++++++++++++ top后台执行显示:top: failed tty get ...

公共技术点(Android 动画基础)

转载地址:http://p.codekk.com/blogs/detail/559623d8d6459ae793499787 一 传统 View 动画(Tween/Frame) 1.1 Tween 动 ...

c++之sleep函数

c++之sleep函数 c++中使用sleep函数需要导入第三方库,标准库中没有该函数实现. 我们导入window.h使用Sleep()方法,注意:第一个S要大写,括号中的表示的整数倍的毫秒 Slee ...

python 怎么和命令行交互

http://www.cyberciti.biz/faq/python-run-external-command-and-get-output/ http://stackoverflow.com/qu ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值