项目中经常要用到上传组件,我一直在使用uploadify这个组件,感觉挺不错,下面演示下如何使用
1. 先下载uploadify-v2.1.4的包,放到项目里
2. 写调用uploadify的初始化方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="/static/plugin/uploadify/uploadify.css"
type="text/css" />
<script type="text/javascript" src="/static/plugin/jquery/core.js"></script>
<script type="text/javascript"
src="/static/plugin/uploadify/jquery.uploadify.v2.1.4.js"></script> <script
type="text/javascript" src="/static/plugin/uploadify/swfobject.js"></script>
<script type="text/javascript">
$(function() {
jQuery("#filedata")
.uploadify(
{
'uploader' : '/static/plugin/uploadify/uploadify.swf?ver=' + new Date()
.getTime(), //是组件自带的flash,用于打开选取本地文件的按钮
/*'buttonImg' : '/plugin/uploadify/upload.jpg',
'width' : 120,
'height' : 30,*/
'wmode' : 'opaque',
'script' : 'aa.html',//处理上传的路径,这里使用Struts2是XXX.action
'cancelImg' : '/static/plugin/uploadify/cancel.png',//取消上传文件的按钮图片,就是个叉叉
'sizeLimit' : 20971520, //允许文件上传的大小 20M
'fileDataName' : 'filedata',//和input的name属性值保持一致就好,Struts2就能处理了
'queueID' : 'fileQueue',
'auto' : false,//是否选取文件后自动上传
'multi' : true,//是否支持多文件上传
'queueSizeLimit' : 5, //默认上传文件数
'simUploadLimit' : 5,//每次最大上传文件数
'buttonText' : 'UPLOAD FILE',//按钮上的文字
'displayData' : 'percentage',//有speed和percentage两种,一个显示速度,一个显示完成百分比
'rollover' : false,
'fileDesc' : 'txt.',//'支持格式:jpg/gif/jpeg/png/bmp.', //如果配置了以下的'fileExt'属性,那么这个属性是必须的
'fileExt' : '*.txt',//允许的格式,'*.jpg;*.gif;*.jpeg;*.png;*.bmp' '*.doc;*.pdf;*.rar'
'onComplete' : function(event, queueID, fileObj,
response, data) {
setInterval("showResult()", 2000);//三秒后删除显示的上传成功结果
},
'onSelect' : function(event, queueID, fileObj) {
},
'onCancel' : function(event, queueId, fileObj, data) {
},
'onQueueFull' : function(event, data) {
}
});
jQuery("#filedata1")
.uploadify(
{
'uploader' : '/static/plugin/uploadify/uploadify.swf?ver=' + new Date()
.getTime(), //是组件自带的flash,用于打开选取本地文件的按钮
/*'buttonImg' : '/plugin/uploadify/upload.jpg',
'width' : 120,
'height' : 30,*/
'wmode' : 'opaque',
'script' : 'aa.html',//处理上传的路径,这里使用Struts2是XXX.action
'cancelImg' : '/static/plugin/uploadify/cancel.png',//取消上传文件的按钮图片,就是个叉叉
'sizeLimit' : 20971520, //允许文件上传的大小 20M
'fileDataName' : 'filedata1',//和input的name属性值保持一致就好,Struts2就能处理了
'queueID' : 'fileQueue1',
'auto' : false,//是否选取文件后自动上传
'multi' : true,//是否支持多文件上传
'queueSizeLimit' : 5, //默认上传文件数
'simUploadLimit' : 5,//每次最大上传文件数
'buttonText' : 'UPLOAD FILE',//按钮上的文字
'displayData' : 'percentage',//有speed和percentage两种,一个显示速度,一个显示完成百分比
'rollover' : false,
'fileDesc' : 'txt.',//'支持格式:jpg/gif/jpeg/png/bmp.', //如果配置了以下的'fileExt'属性,那么这个属性是必须的
'fileExt' : '*.txt',//允许的格式,'*.jpg;*.gif;*.jpeg;*.png;*.bmp' '*.doc;*.pdf;*.rar'
'onComplete' : function(event, queueID, fileObj,
response, data) {
setInterval("showResult()", 2000);//三秒后删除显示的上传成功结果
},
'onSelect' : function(event, queueID, fileObj) {
},
'onCancel' : function(event, queueId, fileObj, data) {
},
'onQueueFull' : function(event, data) {
}
});
});
function uploadFile() {//上传文件
jQuery('#filedata').uploadifyUpload();
}
function cancleUpload() {
jQuery('#filedata').uploadifyClearQueue();
}
function uploadFile1() {//上传文件
jQuery('#filedata1').uploadifyUpload();
}
function cancleUpload1() {
jQuery('#filedata1').uploadifyClearQueue();
}
function up(){
alert('触发了表单提交----要先上传完文件才能提交!');
uploadFile();
uploadFile1();
return false;
}
</script>
</head>
<body leftmargin="8" topmargin="8" background=''>
<form action="aa.html" method="post" onsubmit="return up();">
<div>
<div id="fileQueue"></div>
<input type="file" name="filedata" id="filedata" />
<div id="result"></div>
<!--显示结果--></div>
<br />
<hr />
<div>
<div id="fileQueue1"></div>
<input type="file" name="filedata1" id="filedata1" />
<div id="result1"></div>
<!--显示结果--></div>
<input type="submit" value="提交表单" />
</form>
</body>
</html>
3. 最后测试页面,有个需要注意的地方,就是上传路径不能有权限控制的,因为uploadify会丢失session,导致后台验证权限失败,建议弄个无权限限制路径上传再移到正规路径下