Uploadify是JQuery的一个上传插件主要功能是批量上传文件
支持单文件或多文件上传,可控制并发上传的文件数
在服务器端支持各种语言与之配合使用,诸如PHP,.NET,Java……
通过参数可配置上传文件类型及大小限制
通过参数可配置是否选择文件后自动上传
易于扩展,可控制每一步骤的回调函数(onSelect, onCancel……)
通过接口参数和CSS控制外观
引入uploadify的工具包
<link rel="stylesheet" href="<%=request.getContextPath()%>/js/uplodify/uploadify.css" type="text/css" />
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.9.1.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/uplodify/jquery.uploadify.min.js"></script>
<div id="attachs"></div> //进度条显示
<input type="hidden" id="fujianIds" name="ids"/> //上传后地址保存在数据库返回的id集合,
<input type="file" id="file_upload" name="userAttach"/>
<a href="javascrit:;" onclick="javascript:$('#file_upload').uploadify('upload','*')" class="button icon add">上传</a>
<a href="javascrit:;" onclick="javascript:$('#file_upload').uploadify('cancel', '*')" class="button icon add">取消上传</a>
<script type="text/javascript">
var v_attrchids= "";
$(document).ready(function() {
$("#file_upload").uploadify({
'auto':false,//是否自动上传
'successTimeout':99999, //超时时间上传成功后,将等待服务器的响应时间: 单位:秒
'formData':{
//附带值 JSON对象数据,将与每个文件一起发送至服务器端。如果为动态值,请在onUploadStart()中使用settings()方法更改该JSON值
},
'swf': "<%=request.getContextPath()%>/js/uplodify/uploadify.swf", //flash
'queueID':'uploadfileQueue',//文件选择后的容器div的id值
'fileObjName':'userAttach',//要上传的文件名称 要与后台Action的文件名(hereFile)保持一致
'uploader':'<%=request.getContextPath()%>/user/uploadFile.do',//上传地址
'buttonImage':'<%=request.getContextPath()%>/js/uplodify/background.jpg',//图片按钮
//浏览按钮的大小
'width':'150',
'height':'25',
'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',//允许上传的文件后缀
'fileSizeLimit':'1000KB',//上传文件的大小限制允许上传文件的最大 大小单位(B, KB, MB, or GB)(0为没有限制)
'queueSizeLimit' : 3,//允许上传的文件的最大数量。
//选择上传文件后调用
'onSelect' : function(file) {
//alert("jljklj");
},
//返回一个错误,选择文件的时候触发
'onSelectError':function(file, errorCode, errorMsg){
switch(errorCode) {
case -100:
alert("上传的文件数量已经超出系统限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!");
break;
case -110:
alert("文件 ["+file.name+"] 大小超出系统限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");
break;
case -120:
alert("文件 ["+file.name+"] 大小异常!");
break;
case -130:
alert("文件 ["+file.name+"] 类型不正确!");
break;
}
},
//检测FLASH失败调用
'onFallback':function(){
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},
//上传到服务器,服务器返回相应信息到data里
'onUploadSuccess':function(file, data, response){
var attach= eval("("+data+")");
v_attrchids += "," + attach.id;
$('#attachs').append('<span id="fujian_'+attach.id+'">'+'<img src=<%=request.getContextPath()%>'+attach.path+' height="50" width="50">'+'<a href="javascript:;" onclick="delFujian('+attach.id+');">删除</a></span>');
$("#fujianIds").val(v_attrchids);
},
//当单个文件上传出错时触发
'onUploadError': function (file, errorCode, errorMsg, errorString) {
// alert("上传失败");
// alert(文件 ["+file.name+"] + ' 上传失败: ' + errorString);
}
});
});
var basePath = "${ctx }";
document.write("<script type='text/javascript' "
+ "src='"+basePath+"/js/uploadify/jquery.uploadify-3.1.js?" + new Date()
+ "'></s" + "cript>");
</script>
后台处理
uploadify是基于ajax
private UserAttach userAttachDto =new UserAttach();
private String ids;
//上传文件 必须与前jsp页面中uploadify中参数 'fileObjName':'demo1' 保持一致
private File userAttach;
//文件名 命名规则 按照 上传文件+ FileName 会自动匹配相应文件名
private String userAttachFileName;
public void uploadFile(){
//獲取當前要上傳的路徑
String userAttachUrl = getServletContext().getRealPath(getProperty("uploadpath")); //上传地址
if(userAttach!=null){
String[] split = userAttachFileName.split("\\.");
String fileLastName=UUID.randomUUID().toString()+"pbw."+split[split.length - 1];
FileUtil.upFile(userAttach, fileLastName, userAttachUrl);
String Url=getProperty("uploadpath")+fileLastName;
userAttachDto.setUserAttachUrl(Url);
userAttachDto.setUserAttachName(fileLastName);
System.out.println(Url);
userService.insertUserAttach(userAttachDto);
int id = userAttachDto.getId();//
out("{\"id\":" + id + ",\"path\":\""+Url+ "\"}");
}
}