一般的时候都是用的struts提交表单进行文件上传
我做了一个校验 ,想用ajax进行文件的验证,这时候就需要使用ajax上传文件进行验证
首先需要 一个js包
jquery 和 ajaxfileupload.js
ajaxfileupload 下载地址 :点击打开链接
使用方法:
前台js
$("#submitbtn").click(function(){
$("#dmIfSubmit").attr("value" ,"1");
$.ajaxFileUpload({
url:'${base}/qiye/direcapply!checkFile.action', //后台需要走的action
secureuri:false,
fileElementId:'files', //文件选择框的id属性
success: function (data, textStatus) { //相当于java中try语句块的用法
alert( data.activeElement.innerHTML);
alert("上传图片成功!");
},
error: function (data, status, e) { //相当于java中catch语句块的用法
}
});
});
后台代码
public String checkFile() throws IOException{
msg="";
if(null == files){
/**若文件为空返回""**/
msg= "宣传材料不能为空";
}else{
// 判断数据是否正确
// 文件后缀名
int index = StringUtils.lastIndexOf(filesFileName, '.');
if (index == -1) {
msg= "文件类型错误!";
}
/**获取文件后缀名**/
String extFileName = StringUtils.substring(filesFileName, index + 1);
String forbitName = "doc-docx";
String[] forbitNames = forbitName.split("-");
for(int i= 0 ;i<forbitNames.length ; i++){
if(!extFileName.equalsIgnoreCase(forbitNames[i])){
msg= "请上传正确的附件,附件不能类型不能为"+forbitNames[i];
break;
}
}
}
HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
response.setHeader("content-type", "text/html;charset=utf-8");
//获得输出流
OutputStream out = response.getOutputStream();
//编码 发送响应体
out.write(msg.getBytes("utf-8"));
//response.getWriter().println(new String (msg.getBytes("ISO8859_1"), "utf-8"));
return null;
}