当前位置:七道奇文章资讯网站建设网站编程
日期:2010-07-31 11:26:00  来源:本站整理

<b>PHP上传实现断点续传文件的办法</b>[网站编程]

赞助商链接



  本文“<b>PHP上传实现断点续传文件的办法</b>[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

其实说简单点就是通过这个变量$_SERVER['HTTP_RANGE']获得用户恳求的文件的range,然后程序去掌握文件的输出.比方第一次恳求一个文件的从0到999字节,第二次恳求1000到1999字节,以此类推,每次恳求1000字节的内容,然后程序通过fseek函数去获得对应的文件位置,然后输出.

  1. $fname = './05e58c19552bb26b158f6621a6650899'
  2. $fp = fopen($fname,'rb'); 
  3. $fsize = filesize($fname); 
  4. if (isset($_SERVER['HTTP_RANGE']) && ($_SERVER['HTTP_RANGE'] != "") && preg_match("/^bytes=([0-9]+)-$/i", $_SERVER['HTTP_RANGE'], $match) && ($match[1] < $fsize)) { 
  5. $start = $match[1]; 
  6. } else { 
  7. $start = 0
  8. @header("Cache-control: public"); 
  9. @header("Pragma: public"); 
  10. if ($start > 0) { 
  11. fseek($fp, $start); 
  12. Header("HTTP/1.1 206 Partial Content"); 
  13. Header("Content-Length: " . ($fsize - $start)); 
  14. Header("Content-Ranges: bytes" . $start . "-" . ($fsize - 1) . "/" . $fsize); 
  15. } else { 
  16. header("Content-Length: $fsize"); 
  17. Header("Accept-Ranges: bytes"); 
  18. @header("Content-Type: application/octet-stream"); 
  19. @header("Content-Disposition: attachment;filename=1.rm"); 
  20. fpassthru($fp);  


大家也可以看下Discuz!论坛软件的attachment.php文件是若何实现断点续传的.请看代码:也是通过$_SERVER['HTTP_RANGE']获得用户恳求的文件的range,具体的大家可以查看其源码解析下.这里我就当举一反三了.
 

  1. $range = 0
  2. if($readmod == 4) { 
  3. dheader('Accept-Ranges: bytes'); 
  4. if(!emptyempty($_SERVER['HTTP_RANGE'])) { 
  5. list($range) = explode('-',(str_replace('bytes=', '', $_SERVER['HTTP_RANGE']))); 
  6. $rangesize = ($filesize - $range) > 0 ? ($filesize - $range) : 0; 
  7. dheader('Content-Length: '.$rangesize); 
  8. dheader('HTTP/1.1 206 Partial Content'); 
  9. dheader('Content-Range: bytes='.$range.'-'.($filesize-1).'/'.($filesize)); 
  10. }  

  以上是“<b>PHP上传实现断点续传文件的办法</b>[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .