URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4173
[ Назад ]

Исходное сообщение
"Проблемы с закачкой"

Отправлено fate , 15-Июн-06 11:44 
Всем доброго времени суток!

У меня есть сервер Apache 2.0 + PHP 5. Есть скрипт навигации по файловой системе с поддержкой загрузки файлов.

*********
...
/* вызывается при загрузке файла... */
function do_download($path, $file) {
  $get_path = strip_junk($path);
  $get_file = strip_junk($file); /* fopen adds \ to ' - so we strip 'em. */
  header("Content-Disposition: atachment; filename=" . $get_file);
  header("Content-Type: application/octet-stream");
  header("Content-Length: " . filesize(DOWNLOAD_PATH . "/$get_path/$get_file"));
  header("Cache-Control: no-cache, must-revalidate");
  header("Pragma: no-cache");
  header("Expires: 0");
  $fp = fopen(DOWNLOAD_PATH . "/$get_path/$get_file", "rb");
  fpassthru($fp);

  exit;
}
...
*********

Проблема в том, что при загрузке файлов через IE, к каждому файлу в начало добавляются 2 байта - 0D 0A (перевод строки и возврат карретки). Причем такая "фитча" наблюдается только при использовании IE, а если использовать Firefox или Opera, то загрузка идет без ошибок. Кто-нибь знает в чем тут дело? Куда смотреть? В настройки сервера или браузера, или в сам код скрипта?

Перехват запросов и ответов HTTP Tracer'ом подтверждает то, что сервер возвращает правильный размер файла через Content-Length.


Содержание

Сообщения в этом обсуждении
"Проблемы с закачкой"
Отправлено mirya , 19-Июн-06 21:01 
>Проблема в том, что при загрузке файлов через IE, к каждому файлу
>в начало добавляются 2 байта - 0D 0A (перевод строки и
>возврат карретки). Причем такая "фитча" наблюдается только при использовании IE, а
>если использовать Firefox или Opera, то загрузка идет без ошибок. Кто-нибь
>знает в чем тут дело? Куда смотреть? В настройки сервера или
>браузера, или в сам код скрипта?

у меня подозрение, что где-то до начала вывода файла ты пишешь перевод строки в stdout - напр.

<?php require 'lib.inc'; passthru($file); ?>

lib.inc (with hidden chars shown):
<?php\r\n
some routines...\r\n
?>\r\n

  ^^^^
обычно такого вида. это не может объяснить нормальное поведение оперы/файрфокса (обход станд. ошибки?), но попробовать стоит


"Проблемы с закачкой"
Отправлено saintlock , 27-Июн-06 18:32 
было аналогичное один раз - только без загрузки файла - а просто вывод содержал один кракозябл (только под IE) Ломали голову - потом посмотрели исходник под MC в линухах и обнаружили, что тама ескейп последоватиельность в выводе осталась - попробуйте - может поможет :)

С уважением, Сергей