jquery ajaxfileupload异步上传插件
本文实例为大家分享了ajaxfileupload异步上传插件的使用方法,供大家参考,具体内容如下
服务器端采用struts2来处理文件上传。
所需环境:
jquery.js
ajaxfileupload.js
struts2所依赖的jar包
及struts2-json-plugin-2.1.8.1.jar
编写文件上传的Action
packagecom.ajaxfile.action; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importorg.apache.struts2.ServletActionContext; importcom.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") publicclassFileActionextendsActionSupport{ privateFilefile; privateStringfileFileName; privateStringfileFileContentType; privateStringmessage="你已成功上传文件"; publicStringgetMessage(){ returnmessage; } publicvoidsetMessage(Stringmessage){ this.message=message; } publicFilegetFile(){ returnfile; } publicvoidsetFile(Filefile){ this.file=file; } publicStringgetFileFileName(){ returnfileFileName; } publicvoidsetFileFileName(StringfileFileName){ this.fileFileName=fileFileName; } publicStringgetFileFileContentType(){ returnfileFileContentType; } publicvoidsetFileFileContentType(StringfileFileContentType){ this.fileFileContentType=fileFileContentType; } @SuppressWarnings("deprecation") @Override publicStringexecute()throwsException{ Stringpath=ServletActionContext.getRequest().getRealPath("/upload"); try{ Filef=this.getFile(); if(this.getFileFileName().endsWith(".exe")){ message="对不起,你上传的文件格式不允许!!!"; returnERROR; } FileInputStreaminputStream=newFileInputStream(f); FileOutputStreamoutputStream=newFileOutputStream(path+"/"+this.getFileFileName()); byte[]buf=newbyte[1024]; intlength=0; while((length=inputStream.read(buf))!=-1){ outputStream.write(buf,0,length); } inputStream.close(); outputStream.flush(); }catch(Exceptione){ e.printStackTrace(); message="对不起,文件上传失败了!!!!"; } returnSUCCESS; } }
struts.xml
text/html text/html
注意结合Action观察struts.xml中result的配置。
contentType参数是一定要有的,否则浏览器总是提示将返回的JSON结果另存为文件,不会交给ajaxfileupload处理。这是因为struts2JSONPlugin默认的contentType为application/json,而ajaxfileupload则要求为text/html。
文件上传的jsp页面
<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>Inserttitlehere functionajaxFileUpload() { $("#loading") .ajaxStart(function(){ $(this).show(); })//开始上传文件时显示一个图片 .ajaxComplete(function(){ $(this).hide(); });//文件上传完成将图片隐藏起来 $.ajaxFileUpload ( { url:'fileUploadAction.action',//用于文件上传的服务器端请求地址 secureuri:false,//一般设置为false fileElementId:'file',//文件上传空间的id属性 dataType:'json',//返回值类型一般设置为json success:function(data,status)//服务器成功响应处理函数 { alert(data.message);//从服务器返回的json中取出message中的数据,其中message为在struts2中action中定义的成员变量 if(typeof(data.error)!='undefined') { if(data.error!='') { alert(data.error); }else { alert(data.message); } } }, error:function(data,status,e)//服务器响应失败处理函数 { alert(e); } } ) returnfalse; }
注意观察
中的代码,并没有form表单。只是在按钮点击的时候触发ajaxFileUpload()方法。需要注意的是js文件引入的先后顺序,ajaxfileupload.js依赖于jquery因此你知道的。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。