Загрузчик файлов
- function dnlf($dnlf){
- if (headers_sent()) {
- die('Заголовки отправлены');
- }
- if (ini_get('zlib.output_compression')) {
- ini_set('zlib.output_compression', 'Off');
- }
- if (file_exists($dnlf)){
- $fsize = filesize($dnlf);
- $path_parts = pathinfo($dnlf);
- $ext = strtolower($path_parts['extension']);
- $fd = @fopen($dnlf, 'rb');
- $f1 = fileinode($dnlf);
- $f2 = filemtime($dnlf);
- $ftime = gmdate('r', $f2);
- $arr_types = array(
- "sis" => "application/vnd.symbian.install",
- "amr" => "audio/amr",
- "jad" => "text/vnd.sun.j2me.app-descriptor;charset=UTF-8",
- "jar" => "application/java-archive",
- "mp4" => "video/mp4",
- "3gp" => "video/3gpp",
- "rar" => "application/x-rar-compressed",
- "doc" => "application/msword",
- "exe" => "application/octet-stream",
- "pdf" => "application/pdf",
- "zip" => "application/zip",
- "mp3" => "audio/mpeg",
- "wav" => "audio/x-wav",
- "bmp" => "image/bmp",
- "gif" => "image/gif",
- "jpg" => "image/jpeg",
- "png" => "image/png",
- "css" => "text/css",
- "txt" => "text/plain",
- "mpg" => "video/mpeg",
- "avi" => "video/x-msvideo",
- );
- if (in_array($ext, $arr_types)) {
- $type = $arr_types[$ext];
- } else {
- $type = 'application/force-download';
- }
- if (isset($_SERVER['HTTP_RANGE'])) {
- $range = $_SERVER['HTTP_RANGE'];
- $range = str_replace('bytes=', '', $range);
- list($range, $end) = explode('-', $range);
- if (!empty($range)) {
- fseek($fd, $range);
- }
- } else {
- $range = 0;
- }
- if ($range) {
- header($_SERVER['SERVER_PROTOCOL'] . ' 206 Partial Content');
- } else {
- header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');
- }
- header('Last-Modified: ' . $ftime);
- header('ETag: ' . sprintf('%x-%x-%x', $f1, $fsize, $f2));
- header('Accept-Ranges: bytes');
- 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: ' . $type . '');
- header('Content-Description: inline; File Transfer');
- header('Content-Disposition: attachment; filename="' . basename($dnlf) . '";', false);
- header('Content-Transfer-Encoding: binary');
- header('Content-Length: ' . ($fsize - $range));
- if ($range) {
- header('Content-Range: bytes ' . $range . '-' . ($fsize - 1) . '/' . $fsize);
- }
- header('Connection: close');
- ob_clean();
- sleep(1);
- $speed = 1024*8; // 8 - speed/kb
- while(!feof($fd) && connection_status()==0) { // проверяем коннект, чтоб процесс не висел при дисконнекте
- $buf = fread($fd, $speed); // отдаем файл порцайками , менее напрягает сервер, актуально для файлов более 1 гб
- print($buf);
- flush();
- #sleep(1); // if speed > 8 разкоментирование приведет к ограничению скорости
- }
- fclose($fd);
- } else {
- die('Файл не найден!');
- }
- }
три дня курил маны и гугл Гг , вот что получилось