日期:2010-07-31 11:26:00 来源:本站整理
<b>PHP上传实现断点续传文件的办法</b>[网站编程]
本文“<b>PHP上传实现断点续传文件的办法</b>[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
其实说简单点就是通过这个变量$_SERVER['HTTP_RANGE']获得用户恳求的文件的range,然后程序去掌握文件的输出.比方第一次恳求一个文件的从0到999字节,第二次恳求1000到1999字节,以此类推,每次恳求1000字节的内容,然后程序通过fseek函数去获得对应的文件位置,然后输出.
- $fname = './05e58c19552bb26b158f6621a6650899';
- $fp = fopen($fname,'rb');
- $fsize = filesize($fname);
- if (isset($_SERVER['HTTP_RANGE']) && ($_SERVER['HTTP_RANGE'] != "") && preg_match("/^bytes=([0-9]+)-$/i", $_SERVER['HTTP_RANGE'], $match) && ($match[1] < $fsize)) {
- $start = $match[1];
- } else {
- $start = 0;
- }
- @header("Cache-control: public");
- @header("Pragma: public");
- if ($start > 0) {
- fseek($fp, $start);
- Header("HTTP/1.1 206 Partial Content");
- Header("Content-Length: " . ($fsize - $start));
- Header("Content-Ranges: bytes" . $start . "-" . ($fsize - 1) . "/" . $fsize);
- } else {
- header("Content-Length: $fsize");
- Header("Accept-Ranges: bytes");
- }
- @header("Content-Type: application/octet-stream");
- @header("Content-Disposition: attachment;filename=1.rm");
- fpassthru($fp);
大家也可以看下Discuz!论坛软件的attachment.php文件是若何实现断点续传的.请看代码:也是通过$_SERVER['HTTP_RANGE']获得用户恳求的文件的range,具体的大家可以查看其源码解析下.这里我就当举一反三了.
- $range = 0;
- if($readmod == 4) {
- dheader('Accept-Ranges: bytes');
- if(!emptyempty($_SERVER['HTTP_RANGE'])) {
- list($range) = explode('-',(str_replace('bytes=', '', $_SERVER['HTTP_RANGE'])));
- $rangesize = ($filesize - $range) > 0 ? ($filesize - $range) : 0;
- dheader('Content-Length: '.$rangesize);
- dheader('HTTP/1.1 206 Partial Content');
- dheader('Content-Range: bytes='.$range.'-'.($filesize-1).'/'.($filesize));
- }
- }
以上是“<b>PHP上传实现断点续传文件的办法</b>[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论