提到上传,就会想到file标签。但是如果文件过大,或者多个文件的时候,这个html标签就有点力不从心了,下面主要讨论php后台来处理多线程上传工具。正因为用自带的那个标签解决不了,所以就有了今天的这个Uploadify这个插件的诞生。

uploadfiy这个插件是基于js里面的jquery库写的。结合了ajax和flash,实现了这个多线程上传的功能。
现在最新版为3.2,下载地址为:http://www.uploadify.com/wp-content/uploads/files/uploadify.zip。璞玉使用的是2.9的版本,新版本不一定是最好的,最适合自己的才是最好的。下面来介绍一下uploadfiy的使用方法。
第一步:下载好压缩包之后,解压里面的文件:
  1. jquery.uploadify.js      (主要插件)
  2. jquery-1.7.2.min.js      (jquery主件)
  3. uploadify.swf              (flash上传插件)
  4. uploadify.css                (上传样式表)
  5. uploadify-cancel.png    (flash上传按钮图标)
  6. uploadify.php              (上传处理数据)
  7. uploads文件夹             (默认保存上传文件目录)
第二步:写上传接口
在你需要上传的页面写下如下js:
首先引入js/css
1
2
3
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery.uploadify.js"></script>

然后定义一些初始化变量,后面都写有注释

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script type="text/javascript">
$(document).ready(function() {
$("#fileInput2").uploadify({
'uploader': 'js/uploadify.swf',//所需要的flash文件
'cancelImg': 'cancel.png',//单个取消上传的图片
'script': 'js/uploadify.php',//实现上传的程序
'folder': 'uploads',//服务端的上传目录
//'auto': true,//自动上传
'multi': true,//是否多文件上传
//'checkScript': 'js/check.php',//验证 ,服务端的
'displayData': 'speed',//进度条的显示方式
//'fileDesc': 'Image(*.jpg;*.gif;*.png)',//对话框的文件类型描述
'fileExt': '*.jpg;*.jpeg;*.gif;*.png',//可上传的文件类型
//'sizeLimit': 999999 ,//限制上传文件的大小
'simUploadLimit' :3, //并发上传数据
'queueSizeLimit' :20, //可上传的文件个数
'buttonText' :'文件上传',//通过文字替换钮扣上的文字
'buttonImg': 'css/images/browseBtn.png',//替换上传钮扣
'width': 80,//buttonImg的大小
'height': 24,//
'rollover': true,//button是否变换
onComplete: function (evt, queueID, fileObj, response, data) {
//alert("Successfully uploaded: "+fileObj.filePath);
//alert(response);
getResult(response);//获得上传的文件路径
}
//onError: function(errorObj) {
//     alert(errorObj.info+"               "+errorObj.type);
//}
});
});
</script>

下面这个是ajax 接受后台数据处理返回来的值,然后追加到前台上传页面显示上传的文件名和地址

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<script type="text/javascript">
function getResult(content){
//通过上传的图片来动态生成text来保存路径
var board = document.getElementById("divTxt");
board.style.display="";
var newInput = document.createElement("input");
newInput.type = "text";
newInput.size = "45";
newInput.name="myFilePath[]";
var obj = board.appendChild(newInput);
var br= document.createElement("br");
board.appendChild(br);
obj.value=content;
}
</script>
最后是在body里面添加调用标签
01
02
03
04
05
06
07
08
09
10
11
<fieldset style="border: 1px solid #CDCDCD; padding: 8px; padding-bottom:0px; margin: 8px 0">
<legend> <strong> 多文件上传</strong></legend>
<div><input id="fileInput2" name="fileInput2" type="file" />
<input type="button" value="确定上传" onclick="javascript:$('#fileInput2').uploadifyUpload();">&nbsp;&nbsp;
||&nbsp;&nbsp;<a href="javascript:$('#fileInput2').uploadifyClearQueue();">清除上传列表</a></div>
<p></p>
</fieldset>
<FORM name="form2" METHOD=POST ACTION="db.php">
<div id="divTxt" style="display:none"><span style="color:red"><strong>已经上传的图片有:</strong></span><br></div><br>
<INPUT TYPE="submit" value="提  交">
</FORM>
第三步:定义uploadify处理后台, 默认的是uploadify.php页面
璞玉这里就简单的写下获取文件名称的例子
1
2
3
if (!empty($_FILES)) {
echo $_FILES['Filedata']['name'];
}
具体说怎么处理这里的文件,是复制到哪儿还是怎么处理,看各位的需求了。直接在这个后台写就行了
第四步:打开页面然后去上传一个试试
uploadify上传

uploadify上传

uploadify选择上传

uploadify选择上传

uploadify选择上传

uploadify上传完成

是不是就完成了呢?