Вход Регистрация
Файл: system/PHP-classes/FILE.class.php
Строк: 168
<?php 

/*
--------------------------
Класс для работы с файлами
--------------------------
*/
  
CLASS FILE{
  
  
/*
  ---------------------------------------
  Загрузка файла
  ---------------------------------------
  */
  
  
PUBLIC STATIC FUNCTION UPLOAD($path$name 'Выберите файл'$form 1$class 'file-upload'$icon 'upload') {
    
    GLOBAL 
$user;
    
    
//$path - путь обращения к обработчику
    //$name - описание выгрузки
    //$form - использование собственной формы отправки
    //$class - стиль кнопки
    //$icon - иконка кнопки
    
    
?>
      
    <? IF ($form == 1){ ?>
    <form id="js-form" method="post" enctype="multipart/form-data">
    <? ?>
      
    <label class='file-label'><span class="<?=$class?>"> 
    <input id="js-file" type="file" name="file" class="file-form" multiple>
    <span><i class="fa fa-<?=$icon?> fa-fw"></i> <?=TEXT_ABSOLUTE(LG($name))?></span>
    </span></label>
      
    <? IF ($form == 1){ ?>  
    </form>
    <? ?>  
  
    <div id="result"></div>
    
    <script>
      
    $('#js-file').change(function() {
      
      $('#js-form').ajaxSubmit({
        
        xhr: function() {
          
          var xhr = new window.XMLHttpRequest();
          
          xhr.upload.addEventListener("progress", function(evt) {
            if (evt.lengthComputable) {
              var percentComplete = evt.loaded / evt.total;
              percentComplete = parseInt(percentComplete * 100);
              
              var data_progress = "<div class='file-upload-progress'><i class='fa fa-spinner fa-pulse fa-lg fa-fw'></i> <b>Загрузка...</b><br /><br /><div class='file-upload-progress-ind-o'><div class='file-upload-progress-ind' style='width:"+percentComplete+"%;'><span class='file-upload-progress-pr'>"+percentComplete+"%</span></div></div></div>";
              
              $('#result').html(data_progress);
              
              if (percentComplete === 100) {
                
                $('#result').html("<div class='file-upload-progress'><font color='#4BBB62'><i class='fa fa-check fa-lg fa-fw'></i> <b>Успешно загружено</b></font><br /><br /><div class='file-upload-progress-ind-o'><div class='file-upload-progress-ind-green' style='width:100%;'><span class='file-upload-progress-pr'>100%</span></div></div></div>");
              
              }
              
            }
          
          }, false);
          
          return xhr;
        
        },
        type: "POST",
        url: "<?=$path?>",
        target: "#result",
        success: function() {
          
          // После загрузки файла очистим форму
          $('#js-form')[0].reset();
        
        },
        
        error: function() {
          
          $('#result').html("<div class='file-upload-progress'><i class='fa fa-exclamation-triangle fa-fw'></i> Ошибка. Попробуйте ещё раз или проверьте подключение и интернету</div>");
        
        }
      
      });
    
    });
    
    </script>
      
    <?
    
  
}
  
  
/*
  -------------------------------------------
  Функция отдачи файла на просмотр/скачивание
  -------------------------------------------
  */
  
  
PUBLIC STATIC FUNCTION DOWNLOAD($filename$name$mimetype='application/octet-stream'){
    
    IF (!
FILE_EXISTS($filename)){ DIE('Файл не найден'); }
    
    @
OB_END_CLEAN();
    
    
$from 0;
    
$size FILESIZE($filename);
    
$to $size;
    
    IF (ISSET(
$_SERVER['HTTP_RANGE'])){
      
      IF (
PREG_MATCH('#bytes=-([0-9]*)#i'$_SERVER['HTTP_RANGE'], $range)){
        
        
$from $size-$range[1];
        
$to $size;
      
      }ELSEIF (
PREG_MATCH('#bytes=([0-9]*)-#i'$_SERVER['HTTP_RANGE'], $range)){
        
        
$from $range[1];
        
$to $size;
      
      }ELSEIF (
PREG_MATCH('#bytes=([0-9]*)-([0-9]*)#i'$_SERVER['HTTP_RANGE'], $range)){
        
        
$from $range[1];
        
$to $range[2];
      
      }
      
      
HEADER('HTTP/1.1 206 Partial Content');
      
      
$cr 'Content-Range: bytes '.$from .'-'.$to.'/'.$size;
    
    }ELSE{
      
      
HEADER('HTTP/1.1 200 Ok');
      
      
$etag MD5($filename);
      
$etag SUBSTR($etag08) . '-' SUBSTR($etag87) . '-' SUBSTR($etag158);
      
      
HEADER('ETag: "'.$etag.'"');
      
HEADER('Accept-Ranges: bytes');
      
HEADER('Content-Length: ' .($to-$from));
      IF (ISSET(
$cr)){ HEADER($cr); }
      
HEADER('Connection: close');
      
HEADER('Content-Type: ' $mimetype);
      
HEADER('Last-Modified: ' GMDATE('r'FILEMTIME($filename)));
      
HEADER("Last-Modified: ".GMDATE("D, d M Y H:i:s"FILEMTIME($filename))." GMT");
      
HEADER("Expires: ".GMDATE("D, d M Y H:i:s"TIME() + 3600)." GMT");
      
$f FOPEN($filename'rb');
      
      IF (
PREG_MATCH('#^image/#i'$mimetype)){
        
        
HEADER('Content-Disposition: filename="'.$name.'";');
        
      }ELSE{
        
        
HEADER('Content-Disposition: attachment; filename="'.$name.'";');
        
      }
      
      
FSEEK($f$fromSEEK_SET);
      
      
$size $to;
      
$downloaded 0;
      
      WHILE(!
FEOF($f) && !CONNECTION_STATUS() && ($downloaded $size)){
        
        
$block MIN(1024 8$size $downloaded);
        ECHO 
FREAD($f$block);
        
$downloaded += $block;
        
FLUSH();
      
      }
      
      
FCLOSE($f);
    
    }
    
  }
  
  
/*
  ---------------------------------------------------
  Функция задающая соответствие mime типов расширению 
  ---------------------------------------------------
  */
  
  
PUBLIC STATIC FUNCTION MIME($ras NULL){
    
    IF (
$ras == NULL){
      
      RETURN 
'application/octet-stream';
    
    }ELSE{
      
      
$htaccess FILE(ROOT.'/.htaccess');
      
      FOR (
$i 0$i COUNT($htaccess); $i++){
        
        IF (
PREG_MATCH('#^AddType#i'TRIM($htaccess[$i]))){
          
          
$type EXPLODE(' 'TRIM($htaccess[$i]));
          
$rass STR_REPLACE('.'NULL$type[2]);
          
$mime[$rass] = $type[1];
        
        }
      
      }
      
      IF (ISSET(
$mime[$ras])){
        
        RETURN 
$mime[$ras];
      
      }ELSE{
        
        RETURN 
'application/octet-stream';
      
      }
    
    }
    
  }
  
  
/*
  -------------------------------
  Функция стиля расширения файла
  Автоопределение
  -------------------------------
  */
  
  
PUBLIC STATIC FUNCTION ICONS($ras NULL$data 'big'$width 55$height 55)
  {
    
    
//$data - версия иконки которую отдавать. big или small
    //$ras - формат файла
    
    
$span "<span style='position: absolute; top: 54%; left: 0; right: 0; text-align: center; transform: translateY(-50%); color: white;'>";
    
    IF (
$ras == 'mp4'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #3EA9FF; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-film fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-film fa-fw' style='color: #3EA9FF;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'mp3'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #FF8279; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-music fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-music fa-fw' style='color: #FF8279;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'png'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #87AFCF; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-image fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-image fa-fw' style='color: #87AFCF;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'gif'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #D38CCD; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-image fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-image fa-fw' style='color: #D38CCD;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'jpg'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #70C773; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-image fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-image fa-fw' style='color: #70C773;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'jpeg'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #70C773; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-image fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-image fa-fw' style='color: #70C773;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'zip'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #F08F00; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-file-archive-o fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-file-archive-o fa-fw' style='color: #F08F00;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'code'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #316FB6; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-code fa-lg fa-fw'></i><br /><small><b>ACMS</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-code fa-fw' style='color: #316FB6;'></i>";
      
      }
    
    }ELSEIF (
$ras == 'themes'){
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #009DAC; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-object-group fa-lg fa-fw'></i><br /><small><b>".$ras."</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-object-group fa-fw' style='color: #009DAC;'></i>";
      
      }  
    
    }ELSE{
      
      IF (
$data == 'big'){
        
        
$file "<div style='display: inline-block; position: relative; background-color: #D8C200; width: ".$width."px; height: ".$height."px;'>".$span."<i class='fa fa-file fa-lg fa-fw'></i><br /><small><b>file</b></small></span></div>";
      
      }ELSEIF (
$data == 'small'){
        
        
$file "<i class='fa fa-file fa-fw' style='color: #D8C200;'></i>";
      
      }
    
    }
    
    RETURN 
$file;
  
  }

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