Uploadify插件的使用

 Uploadify是一款优秀的文件上传插件。官方网站是:http://www.uploadify.com/download/

 

1.下载Uploadify插件,解压后如下图所示:

 

2.在HTML文件头部包含所需JS文件,CSS文件。记得包含JQuery

(具体路径根据自己的工程来定)

 

<link rel="stylesheet" type="text/css" href="__PUBLIC__/Js/lib/uploadify/uploadify.css">  
  
<script type="text/javascript" src="__PUBLIC__/Js/lib/jquery-1.6.4.min.js"></script>  
  
  
<script type="text/javascript"   src="__PUBLIC__/Js/lib/uploadify/jquery.uploadify-3.1.min.js"></script>  

  

 

3.编写Uploadify的配置文件,比如 imageUpload.js

 1 $(function() {  
 2       
 3         $('#photoname').uploadify({  
 4             'swf'               :   PUBLIC+"/Js/lib/uploadify/uploadify.swf",  
 5             'uploader'      :   PUBLIC+"/Js/lib/uploadify/uploadify.php",  
 6             'cancelImg'     :   PUBLIC+"/Js/lib/uploadify/uploadify-cancel.png",  
 7             'debug'         :   true,  
 8             'buttonText'    :   '选择照片',  
 9             'method'            :   'post',  
10             'buttonClass'   :  'upload_button',  
11             'fileTypeDesc'  :   '图片文件',  
12             'fileTypeExts'  :   '*.gif;*.jpg;*.png;*.bmp',  
13             'formData'      :   {'public_path'  :   PUBLIC},  
14             'multi'             :   false,  
15               
16             'onUploadComplete': function(file){  
17                   
18             },  
19               
20             /** 
21              * 上传成功后触发事件 
22              */  
23              'onUploadSuccess' : function(file, data, response) {  
24                 //参数data保存的是上传后的图片的路径  
25                 //alert(data);  
26                 //$('#photo').css("background-color","#f00");  
27                   
28                 var path=PUBLIC+"/Uploads/Photo/"+data;  
29                 $('#photo>img').attr("src",path);  
30                 $('#photoname_hidden').val(data);  
31             },  
32         });  
33         //alert(PUBLIC);  
34 });  

 


关于上面的代码,说明如下:

 

 

  • swf指明SWF文件路径
  • uploader指明后台处理文件路径
  • cancelImg指明取消按钮图片路径
  • debug开启调试模式
  • buttonText按钮上的文字
  • method表示上传表单采用的方式
  • buttonClass为按钮添加额外的样式类
  • fileTypeDesc打开对话框的提示信息
  • fileTypeExts允许上传的文件扩展名
  • formData上传文件之外额外上传的表单数据
  • multi是否支持多文件上传
  • onUploadSuccess上传成功后执行的回调函数
注,还有很多配置参数以及事件,具体可参看Uploadify官方网站。
 
 

 

4.在HTML中的表单代码片段如下:

1 <p>  
2               <label class="label">照片</label>  
3               <table><tr><td>  
4                 <div id="photo"><img src="__PUBLIC__/Uploads/Photo/default.jpg"/></div>  
5               </td></tr></table>  
6               <input class="text-input small-input" type="file" name="photo" id="photoname" />  
7             </p>  
8               
9             <input type="hidden" name="photoname" id="photoname_hidden"/> 

 

5.服务器端PHP代码Uploadify.php

 

 1 <?php  
 2   
 3   
 4 $targetFolder = $_POST['public_path'].'/Uploads/Photo/'; //上传的目标路径  
 5   
 6 if (!empty($_FILES)) {  
 7     $tempFile = $_FILES['Filedata']['tmp_name'];  
 8     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;  
 9     $targetFile = rtrim($targetPath,'/') . '/' . md5($_FILES['Filedata']['name']);  
10       
11     // Validate the file type  
12     $fileTypes = array('jpg','jpeg','gif','png','bmp'); // File extensions  
13     $fileParts = pathinfo($_FILES['Filedata']['name']);  
14       
15     //查看文件的名字符串的编码方式  
16     $encode = mb_detect_encoding($targetFile, array("UTF-8","GBK","ASCII","GB2312"));  
17     //echo $tempFile.'<br>';  
18     //echo $targetFile.'<br>';  
19     //echo $encode.'<br>';  
20     /* 
21     if ($encode == "UTF-8"){ 
22         $targetFile = iconv("UTF-8","GBK",$targetFile); 
23     } 
24     */  
25           
26     if (in_array($fileParts['extension'],$fileTypes)) {  
27         move_uploaded_file($tempFile,$targetFile);  
28         echo md5($_FILES['Filedata']['name']);  
29           
30     } else {  
31         echo '您好,文件类型不允许!';  
32     }  
33 }  
34 ?>  

 


如果上传的文件名含有中文,可以使用mb_detect_encoding查看文件名的编码方式然后转码,由于我把文件名进行md5()了,故无需考虑编码方式了。

 

 

---------------------------------------------------------------------------------------------------------------------------

 

最后看一下实际的页面表现

 


 

这里需要注意的是服务端PHP文件中echo出的数据将会出现在客户端Uploadify配置文件uploadImage.js中的onUploadSuccess()事件中的data参数里。可以在onUploadSuccess事件回调函数中 调用alert(data);来查看服务器端脚本的输出信息。

 

由于我在服务器端脚本中:

1 echo md5($_FILES['Filedata']['name']);  

 

 

因此,在JS文件中的UploadSuccess事件中可以更新<img>标签的src属性,来显示刚刚上传的图片。


 

 

由于这些数据的传递都是以Ajax方式进行的,故整个过程没有提交页面。如果想把图片文件名通过表单的形式提交,那么不妨加一个hidden类型的input元素。然后还是在onUploadSuccess事件中更新其value即可。

posted on 2013-12-27 17:54  BB_CC  阅读(185)  评论(0)    收藏  举报