WEB教程基地:www.91ctc.com为你搭建学习WEB技术的优秀平台
网站地图 加入收藏 设为首页
您的位置:本站首页>>PHP>>PHP实例:使用SWFUpload实现PHP上传进度条

PHP实例:使用SWFUpload实现PHP上传进度条

[ 录入者:91ctc | 时间:2013-08-06 17:46:15 | 作者: 91ctc| 来源:本站 | 浏览: 次 ]

文件上传是WEB应用必备功能,尤其是在处理大文件上传的时候,十分需要上传时候实时显示上传进度。PHP实现上传进度条比较麻烦,一种是PHP创始人写的那个APC扩展,另外一种则需要使用PECL扩展模块uploadprogress实现。但是他们各有不足:

1、他们都需要额外安装(我们并没有打算把APC加入PHP5.2.6中);

2、它们都使用本地机制来存储这些信息, APC使用共享内存, 而uploadprogress使用文件系统(不考虑NFS), 这在多台前端机的时候会造成麻烦。

鉴于此,本文介绍一个最方便,也最简单的实现上传进度条的方法:使用swfload实现PHP上传进度条。可以实现多文件一起上传哦。

直接给代码:

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml" >  
  3. <head>  
  4. <title>SWFUpload上传例子- SWFObject上传例子</title>  
  5. <link href="../css/default.css" rel="stylesheet" type="text/css" />  
  6. <script type="text/javascript" src="../swfupload/swfupload.js"></script>  
  7. <script type="text/javascript" src="js/swfupload.swfobject.js"></script>  
  8. <script type="text/javascript" src="js/swfupload.queue.js"></script>  
  9. <script type="text/javascript" src="js/fileprogress.js"></script>  
  10. <script type="text/javascript" src="js/handlers.js"></script>  
  11. <script type="text/javascript">  
  12. var swfu;   
  13.   
  14. SWFUpload.onload = function () {   
  15.     var settings = {   
  16.         flash_url : "../swfupload/swfupload.swf",   
  17.         upload_url: "upload.php",   
  18.         post_params: {   
  19.             "PHPSESSID" : "NONE",   
  20.             "HELLO-WORLD" : "Here I Am",   
  21.             ".what" : "OKAY"   
  22.         },   
  23.         file_size_limit : "100 MB",//文件大小限制   
  24.         //file_types : "*.jpg;*.gif;*.png;*.jpeg;*.flv;*.mp4;*.avi;*wmv",   
  25.         file_types : "*.*",   
  26.         file_types_description : "All Files",//文件类型   
  27.         file_upload_limit : 100,   
  28.         file_queue_limit : 0,   
  29.         custom_settings : {   
  30.             progressTarget : "fsUploadProgress",   
  31.             cancelButtonId : "btnCancel"   
  32.         },   
  33.         debug: false,   
  34.   
  35.         // Button Settings   
  36.         //button_image_url : "XPButtonUploadText_61x22.png",   
  37.         button_image_url: "TestImageNoText_65x29.png",//按钮图片   
  38.         button_placeholder_id : "spanButtonPlaceholder",//按钮id   
  39.         button_text: '<span class="theFont">浏览</span>',//按钮文字   
  40.         button_text_style: ".theFont { font-size: 16; }",//按钮文字字号   
  41.         button_text_left_padding: 12,//按钮左边距   
  42.         button_text_top_padding: 3,//按钮上边距   
  43.         button_width: "65",//按钮宽   
  44.         button_height: "29",//按钮高   
  45.         //button_width: 61,   
  46.         //button_height: 22,   
  47.   
  48.         // The event handler functions are defined in handlers.js   
  49.         swfupload_loaded_handler : swfUploadLoaded,   
  50.         file_queued_handler : fileQueued,   
  51.         file_queue_error_handler : fileQueueError,   
  52.         file_dialog_complete_handler : fileDialogComplete,   
  53.         upload_start_handler : uploadStart,   
  54.         upload_progress_handler : uploadProgress,   
  55.         upload_error_handler : uploadError,   
  56.         upload_success_handler : uploadSuccess,   
  57.         upload_complete_handler : uploadComplete,   
  58.         queue_complete_handler : queueComplete, // Queue plugin event   
  59.            
  60.         // SWFObject settings   
  61.         minimum_flash_version : "9.0.28",   
  62.         swfupload_pre_load_handler : swfUploadPreLoad,   
  63.         swfupload_load_failed_handler : swfUploadLoadFailed   
  64.     };   
  65.   
  66.     swfu = new SWFUpload(settings);   
  67. }   
  68.   
  69. </script>  
  70. </head>  
  71. <body>  
  72. <div id="content">  
  73.   
  74.     <h2>SWFObject上传例子</h2>  
  75.     <form id="form1" action="index.php" method="post" enctype="multipart/form-data">  
  76.         <p>点击“浏览”按钮,选择您要上传的文档文件后,系统将自动上传并在完成后提示您。</p>  
  77.             <div id="divSWFUploadUI">  
  78.             <div class="fieldset  flash" id="fsUploadProgress"><span class="legend">快速上传</span></div>  
  79.             <p id="divStatus">0 个文件已上传</p>  
  80.             <p>  
  81.                 <span id="spanButtonPlaceholder"></span>  
  82.                 <input id="btnCancel" type="button" value="取消所有上传" disabled="disabled" style="margin-left: 2px; height: 29px; font-size: 8pt;" />  
  83.                 <br />  
  84.             </p>  
  85.         </div>  
  86.         <noscript>  
  87.             <div style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px;">  
  88.                 对不起,您的浏览器不支持javascript。   
  89.             </div>  
  90.         </noscript>  
  91.         <div id="divLoadingContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">  
  92.             SWFUpload上传组件正在载入,请稍后   
  93.         </div>  
  94.         <div id="divLongLoading" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">  
  95.             SWFUpload上传组件载入超时。  请确保Flash插件安装正确,并且版本支持本上传组件。   
  96.         </div>  
  97.         <div id="divAlternateContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">  
  98.             SWFUpload不能载入.  请安装或升级Flash Player.   
  99.             点击这里 <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">Adobe website</a> 获得Flash Player.   
  100.         </div>  
  101.     </form>  
  102. </div>  
  103. </body>  
  104. </html>  

运行效果如图:

PHP实现上传进度条

上传后的视频在这里:

PHP上传进度条

upload.php部分:

PHP Code复制内容到剪贴板
  1. if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {   
  2.     $upload_file = $_FILES['Filedata'];   
  3.     $file_info   = pathinfo($upload_file['name']);   
  4.     $file_type   = $file_info['extension'];   
  5.     $save        = 'upload/' . md5(uniqid($_FILES["Filedata"]['name'])) . '.' . $file_info['extension'];   
  6.     $name        = $_FILES['Filedata']['tmp_name'];   
  7.        
  8.     if (!move_uploaded_file($name$save)) {   
  9.         exit;   
  10.     }   
  11.        
  12.     //将数组的输出存起来以供查看   
  13.     $fileName = 'test.txt';   
  14.     $postData = var_export($file_info, true);   
  15.     $file     = fopen('' . $fileName"w");   
  16.     fwrite($file,$postData);   
  17.     fclose($file);   
  18. }  

附件下载:使用SWFupload实现PHP上传进度条的demo

PS:如果您对本文有纠错、质疑、转载、举报等问题时,请加入到网站Q&Q&群:86783981(验证信息:91ctc.com)提交您的问题,让大伙一块讨论。谢谢您的支持,计算机教程中心网将会一如既往的提供优秀资源助您一臂之力!
关闭】【返回顶部

您可能感兴趣的文章
91ctc.com 网络先锋,引领科技,本站原创作品[转载请注明出处]。网站Q&Q&群:86783981(验证信息:91ctc.com)
Copyright© 2010-2017 计算机教程中心网 . All rights reserved. 苏ICP备11081842号