uploadify使用详解

uploadify使用详解

提到上传,就会想到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
<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>

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

<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 接受后台数据处理返回来的值,然后追加到前台上传页面显示上传的文件名和地址

<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里面添加调用标签
<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页面
          璞玉这里就简单的写下获取文件名称的例子
if (!empty($_FILES)) {
 echo $_FILES['Filedata']['name'];
 }
具体说怎么处理这里的文件,是复制到哪儿还是怎么处理,看各位的需求了。直接在这个后台写就行了
第四步:打开页面然后去上传一个试试
uploadify上传

uploadify上传

 

uploadify选择上传

uploadify选择上传

 

uploadify选择上传

uploadify上传完成

        是不是就完成了呢?
       关于uploadify动态传递表单元素  的问题之前有说过。
      可以点击去看看:www.pooy.net/jquery-uploadify-scriptdata.html.uploadify动态传递表单元素。关于uploadify 参数列表(已翻译)
  1. 😛
    你好,我有个疑问,我用你的这个插件整合到我项目中了。现在又个问题,就是我生成了预览图片,有个删除的功能,我可以实现删除预览图,以及img_id_upload 数据中的元素,但是删除完成后,再上传,会报Some files were not added to the queue:
    The number of files selected exceeds the remaining upload limit (0)错误。这个应该是图片数量超出限制了,那问题是,我删除img_id_upload数组中的元素,怎么还会报错呢,他这个长度不是根据img_id_upload来判断的吗?求解,我JS不是太懂~~

  2. Uncaught Call to GetStats failed
    3.2版本,上传成功后,会报这个错误,请问下,是什么原因呢,网上也没有找到相关解决的方法,请指点下

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

请选择吧!