一般的时候都是用的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; }
这样就可以使用ajax 获取页面文件