Вход Регистрация
Файл: system/classes/download.php
Строк: 99
<?php
/* 
    Appointment: Скачивание файлов
    File: download.php 
    Author: likan
    Engine: LIKAN
*/
class download {
    
    var 
$properties = array ('old_name' => ""'new_name' => ""'type' => ""'size' => ""'resume' => ""'max_speed' => "" );
    
    var 
$range 0;
    
    function 
download($path$name ""$resume 0$max_speed 0) {
        
        
$name = ($name == "") ? substrstrrchr"/" $path"/" ), ) : $name;
        
$name explode"/"$name );
        
$name end$name );
        
        
$file_size = @filesize$path );
        
        
$this->properties = array ('old_name' => $path'new_name' => $name'type' => "application/force-download"'size' => $file_size'resume' => $resume'max_speed' => $max_speed );
        
        if( 
$this->properties['resume'] ) {
            
            if( isset( 
$_SERVER['HTTP_RANGE'] ) ) {
                
                
$this->range $_SERVER['HTTP_RANGE'];
                
$this->range str_replace"bytes="""$this->range );
                
$this->range str_replace"-"""$this->range );
            
            } else {
                
                
$this->range 0;
            
            }
            
            if( 
$this->range $this->properties['size'] ) $this->range 0;
        
        } else {
            
            
$this->range 0;
        
        }
    
    }
    
    function 
download_file() {
        
        if( 
$this->range ) {
            
header$_SERVER['SERVER_PROTOCOL'] . " 206 Partial Content" );
        } else {
            
header$_SERVER['SERVER_PROTOCOL'] . " 200 OK" );
        }
        
        
header"Pragma: public" );
        
header"Expires: 0" );
        
header"Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
        
header"Cache-Control: private"false);
        
header"Content-Type: " $this->properties['type'] );
        
header'Content-Disposition: attachment; filename="' $this->properties['new_name'] . '";' );
        
header"Content-Transfer-Encoding: binary" );
        
        if( 
$this->properties['resume'] ) header"Accept-Ranges: bytes" );
        
        if( 
$this->range ) {
            
            
header"Content-Range: bytes {$this->range}-" . ($this->properties['size'] - 1) . "/" $this->properties['size'] );
            
header"Content-Length: " . ($this->properties['size'] - $this->range) );
        
        } else {
            
            
header"Content-Length: " $this->properties['size'] );
        
        }
        
        @
ini_set'max_execution_time');
        @
set_time_limit();
        
        
$this->_download$this->properties['old_name'], $this->range );
    }
    
    function 
_download($filename$range 0) {
        
        @
ob_end_clean();
        
        if( (
$speed $this->properties['max_speed']) > $sleep_time = ($speed) * 1e6;
        else 
$sleep_time 0;
        
        
$handle fopen$filename'rb' );
        
fseek$handle$range );
        
        if( 
$handle === false ) {
            return 
false;
        }
        
        while ( ! 
feof$handle ) ) {
            print( 
fread$handle1024 ) );
            
ob_flush();
            
flush();
            
usleep$sleep_time );
        }
        
        
fclose$handle );
        
        return 
true;
    }

}

?>
Онлайн: 0
Реклама