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因此你知道的。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。