Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311567
  • 博文数量: 96
  • 博客积分: 230
  • 博客等级: 二等列兵
  • 技术积分: 722
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-13 22:25
个人简介

心安处即吾乡!

文章分类

全部博文(96)

文章存档

2016年(1)

2014年(79)

2013年(7)

2012年(9)

我的朋友

分类: PHP

2012-04-18 19:27:58

点击(此处)折叠或打开

  1. <html>
  2. <head>
  3. <title>show curl download progress</title>

  4. <style type="text/css">
  5. #progress-bar {
  6. width: 200px;
  7. padding: 2px;
  8. border: 2px solid #aaa;
  9. background: #666666;
  10. }

  11. #progress {
  12. background: #fff;
  13. color: #fff000;
  14. white-space: nowrap;
  15. padding: 5px 0;
  16. text-indent: 5px;
  17. width: 0;
  18. }
  19. </style>
  20. <script type="text/javascript">
  21. function updateProgress(percentage) {
  22. var progressElement = document.getElementById_x('progress')
  23. progressElement.style.width = Math.round(percentage*200)+"px";
  24. progressElement.innerHTML = Math.round(percentage*100) + '%';
  25. }
  26. </script>
  27. </head>
  28. <body>
  29. <div id="progress-bar">
  30.   <div id="progress">0%</div>
  31. </div>
  32. <?php
  33. //需要下载的远程文件url
  34. $url="没那么简单.mp3?xcode=31a91a4398f5608cf126db69f9daa1ec&mid=0.44357582289098";

  35. $ch=curl_init();//Initialize a cURL session.

  36. $fp = fopen("/var/www/target.mp3",'w');

  37. $a_opt=array(
  38.  CURLOPT_URL => $url,
  39.  CURLOPT_HEADER => 0,//不包含头信息到输出文件target.mp3
  40.  CURLOPT_RETURNTRANSFER => 1,//当CURLOPT_RETURNTRANSFER设置为false时,方法curl_exec的调用在成功时会直接输出结果并返回bool(true),而不是以字符串形式返回取得的结果数据.
  41.  CURLOPT_NOPROGRESS => 0,//true用来禁用curl transfers的进度条显示,注意:php默认设置该选项为true,此处我们需要false
  42.  CURLOPT_PROGRESSFUNCTION => 'progress',//用来显示进度的回调函数
  43.  CURLOPT_FILE => $fp, //目标文件保存路径
  44.  CURLOPT_FOLLOWLOCATION => TRUE,
  45.  CURLOPT_BUFFERSIZE => 64000,
  46. );
  47. curl_setopt_array($ch,$a_opt);

  48. //echo "dltotal, dlnow, percent, now, ultotal, ulnow"."
    ";


  49. $str=curl_exec($ch);

  50. curl_close($ch);

  51. //$dltotal:download total 下载文件总大小
  52. //$dlnow:download now 当前已经下载大小
  53. //$ultotal:upload total 上传文件总大小
  54. //$ulnow:upload now 当前已经上传大小
  55. function progress($dltotal,$dlnow,$ultotal, $ulnow){
  56. $now = date('Y-m-d H:i:s');//当前时间
  57. //刚开始下载或上传时,$dltotal和$ultotal为0,此处避免除0错误
  58. if(empty($dltotal)){
  59. $percent = "0";
  60. }else{
  61. $percent = $dlnow/$dltotal;
  62. }
  63. //echo "$dltotal, $dlnow, $percent, $now , $ultotal, $ulnow"."
    ";

  64. echo "";
  65. ob_flush();
  66. flush();
  67. return(0);
  68. }

  69. ?>
  70. </body>
  71. </html>

调试方法:将$url改为真正可用url(比如打开百度mp3播放器,复制下载地址),新建以上php文件保存到apache根目录下,从浏览器访问即可

阅读(5298) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~