提到上传,就会想到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<linkhref="css/uploadify.css"rel="stylesheet"type="text/css"/><scripttype="text/javascript"src="js/jquery-1.3.2.min.js"></script><scripttype="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">functiongetResult(content){//通过上传的图片来动态生成text来保存路径varboard = document.getElementById("divTxt");board.style.display="";varnewInput = document.createElement("input");newInput.type ="text";newInput.size ="45";newInput.name="myFilePath[]";varobj = board.appendChild(newInput);varbr= document.createElement("br");board.appendChild(br);obj.value=content;}</script>
最后是在body里面添加调用标签
0102030405060708091011<fieldsetstyle="border: 1px solid #CDCDCD; padding: 8px; padding-bottom:0px; margin: 8px 0"><legend> <strong> 多文件上传</strong></legend><div><inputid="fileInput2"name="fileInput2"type="file"/><inputtype="button"value="确定上传"onclick="javascript:$('#fileInput2').uploadifyUpload();"> || <ahref="javascript:$('#fileInput2').uploadifyClearQueue();">清除上传列表</a></div><p></p></fieldset><FORMname="form2"METHOD=POSTACTION="db.php"><divid="divTxt"style="display:none"><spanstyle="color:red"><strong>已经上传的图片有:</strong></span><br></div><br><INPUTTYPE="submit"value="提 交"></FORM>
第三步:定义uploadify处理后台, 默认的是uploadify.php页面
璞玉这里就简单的写下获取文件名称的例子
123if(!empty($_FILES)) {echo$_FILES['Filedata']['name'];}具体说怎么处理这里的文件,是复制到哪儿还是怎么处理,看各位的需求了。直接在这个后台写就行了
第四步:打开页面然后去上传一个试试
是不是就完成了呢?





评论