Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в скрипте отдачи файла 
:(
    Опции темы
kronos_vano
Дата 17.7.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



Код

         $range = 0;
          $size = 0;
         if (file_exists($fname))
         {
            $f = fopen($fname,'rb');
            ob_end_clean();
            ob_implicit_flush(1);
            $s = $size = $end = filesize($fname);
            $start = 0;
            if (isset($_SERVER['HTTP_RANGE']))
            {
                preg_match('~^bytes=(\d+)?\-(\d*)?$~',$_SERVER['HTTP_RANGE'],$range);
                if(empty($range[1]))
                    $range[1] = 0;
                    
                 if(!empty($range[2])) 
                    ++$range[2];
                 else 
                    $range[2] = $size; 
            }else
                $range = array(0, 0, $size); 
                
            if($range[1] < 0) $range[1] = 0;
            if($range[2] > $size) $range[2] = $size; 
            
            $part_size = $range[2]-$range[1];
            $range_start = $range[1]; 
            $part = false;
            if($range[1] > 0 || $range[2] < $size)
            {
             $part = true;
                $range_stop = $range[2]-1;
             header("HTTP/1.1 206 Partial content");
             header("Content-Length: $part_size");
             header("Content-Range: bytes $range_start-$range_stop/$size");
            }
            else
             header("Content-Length: $size");
            
            header("Accept-Ranges: bytes");
            header('Content-type: application/octet-stream');
            header('Content-Disposition: attachment; filename="'.$line['Name'].'"');
            header("Content-Transfer-Encoding: binary\n");    
            $g = 0;
            if ($part)
                $s = $part_size;
            else
                $s = $size;
            fseek($f,$range[1]);
            while (!feof($f) and $f)
            {
                $buf = fread($f,4096);
                $g += strlen($buf);
                if ($g > $s) {$v = $g-$s; echo substr($buf,0,-1*$v); break;}
                else {echo $buf;}
            }            
            fclose($f);
            exit();
         }
         else
         {
          header("Location: index.php?error");
          die();
         }


Возможно тут где то закралась ошибка из за которой файлы скачиваются битыми или неполностью. Просто никак не могу осилить скрипт с корректной отдачей файла :(

Это сообщение отредактировал(а) kronos_vano - 17.7.2007, 12:24
PM MAIL   Вверх
Another
Дата 20.7.2007, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 17.6.2006

Репутация: нет
Всего: -2



Если скрипт с локалхоста запускается, то такое может быть.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0825 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.