断点续传

来源:互联网 发布:淘宝捉猫猫是什么 编辑:程序博客网 时间:2024/05/02 00:21
try {$filecontent = file_get_contents ( $file_dir . $file_name );if ($filecontent !== false && strlen ( $filecontent ) > 1000) {header ( "Cache-Control:" );header ( "Cache-Control: public" );header ( "Pragma: public" );header ( 'Accept-Ranges: bytes' );header ( "content-type: application/octet-stream" );header ( "content-disposition: attachment; filename=" . $file_name );$ua = $_SERVER ['HTTP_USER_AGENT'];if (preg_match ( '/MISE/', $ua )) {$ie_filename = str_replace ( '+', '%20', urlencode ( $file_name ) );header ( 'Content-Dispositon:attachment; filename=' . $ie_filename );} else {header ( 'Content-Dispositon:attachment; filename=' . $file_name );}$size = strlen ( $filecontent );$size2 = $size - 1;$range = 0;if (isset ( $_SERVER ['HTTP_RANGE'] )) {header ( "HTTP/1.1 206 Partial Content" );list($first, $range) =  explode ( "=", $_SERVER ['HTTP_RANGE'] );$range = explode ( '-', $range );$first_pos = intval ( $range [0] );$second_pos = intval ( $range [1] );if ($first_pos < 0) {$first_pos = 0;}if ($first_pos > $size2) {$first_pos = $size2;}if (!$second_pos || $second_pos <= 0) {$second_pos = $size2;}if ($second_pos > $size2) {$second_pos = $size2;}if ($second_pos < $first_pos) {header ( 'HTTP/1.1 416 Requested Range Not Satisfiable' );ob_flush ();flush (); exit();}$range = $first_pos;$new_length = $second_pos - $first_pos + 1;header ( "Content-Length: $new_length" ); //header ( "Content-Range: bytes $first_pos-$second_pos/$size" ); //Content-Range: bytes 0-4988927/4988928 //header ( 'Content-Length: ' . $size);//header ( 'Content-Range: bytes ' . $range . '-' . $size2 . '/' . $size );} else {header ( 'Content-Length: ' . $size );header ( 'Content-Range: bytes 0-' . $size2 . '/' . $size );}flush ();$fixlenth = 5000;//虚幻输出  $end = $size2;while ( $range <= $end ) {if ($range + $fixlenth > $end) {print (substr ( $filecontent, $range )) ; //输出文件} else {print (substr ( $filecontent, $range, $fixlenth )) ;}flush (); //输出缓冲  ob_flush ();$range = $range + $fixlenth;}exit ();} else {exit ( '  invalid' );}} catch ( Exception $e ) {exit ( 'please try later' );}

0 0
原创粉丝点击