提到上传,就会想到file标签。但是如果文件过大,或者多个文件的时候,这个html标签就有点力不从心了,下面主要讨论php后台来处理多线程上传工具。正因为用自带的那个标签解决不了,所以就有了今天的这个Uploadify这个插件的诞生。
uploadfiy这个插件是基于js里面的jquery库写的。结合了ajax和flash,实现了这个多线程上传的功能。
现在最新版为3.2,下载地址为:http://www.uploadify.com/wp-content/uploads/files/uploadify.zip。璞玉使用的是2.9的版本,新版本不一定是最好的,最适合自己的才是最好的。下面来介绍一下uploadfiy的使用方法。
第一步:下载好压缩包之后,解压里面的文件:
- jquery.uploadify.js (主要插件)
- jquery-1.7.2.min.js (jquery主件)
- uploadify.swf (flash上传插件)
- uploadify.css (上传样式表)
- uploadify-cancel.png (flash上传按钮图标)
- uploadify.php (上传处理数据)
- uploads文件夹 (默认保存上传文件目录)
第二步:写上传接口
在你需要上传的页面写下如下js:
首先引入js/css
123<
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
>
然后定义一些初始化变量,后面都写有注释
0102030405060708091011121314151617181920212223242526272829303132<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 接受后台数据处理返回来的值,然后追加到前台上传页面显示上传的文件名和地址
010203040506070809101112131415<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里面添加调用标签
0102030405060708091011<
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();"
>
|| <
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页面
璞玉这里就简单的写下获取文件名称的例子
123if
(!
empty
(
$_FILES
)) {
echo
$_FILES
[
'Filedata'
][
'name'
];
}
具体说怎么处理这里的文件,是复制到哪儿还是怎么处理,看各位的需求了。直接在这个后台写就行了
第四步:打开页面然后去上传一个试试
是不是就完成了呢?
评论