Эта тема на forum.dklab.ru


max: Еще раз о загрузке файлов с сервера
Прочитал:http://forum.dklab.ru/php/heap/ZagruzkaFaylovNaKompyuterPolzovatelya.html, сделал вточности все как там написано. Файлы с сервера загружаются, но корректно работают только архивы, текстовые, картинки, а вот документы мсофиса загружаются, но там какая-то белиберда, тоже с екзешниками загружаются но не работают. Причем размер всех файлов верный.
Что надо исправить?

Конфигурация:

Windows NT 5.1 build 2600(XP)
Apache/1.3.22 (Win32) PHP/4.3.4 rus/PL30.9
Дмитрий Эсс:
Вы в бинарном режиме файл читаете?
Дмитрий Котеров:
Вы сравните то, что было, и то, что загрузилось:

fc /b orig_file.doc downloaded_file.doc

И плюс заголовок Content-length попробуйте проставить.
bæv:
Что надо исправить?

-- .htaccess (если есть доступ, то -- httpd.conf)
max:
Дмитрий Эсс:
Да, в бинарном.

Дмитрий Котеров:
Сравнил, скаченный файл больше, заголовок Content-length у меня ставится.
вот код:

...
$filename=$myrow[0];
header("Content-Disposition: attachment; filename=$filename\r\n");
header("Content-Type: application/octet-stream\r\n");
header("Content-Type: application/force-download\r\n");
header("Content-Type: application/download\r\n");
header("Content-Transfer-Encoding: binary\r\n");
header("Content-Length: ".filesize($_SERVER['DOCUMENT_ROOT']."/files/".$_GET['f_id']));
readfile($_SERVER['DOCUMENT_ROOT']."/forum/files/".$_GET['f_id']);


baev:
Есть доступ к httpd.conf что там надо править?
Если:
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
<IfModule>,
то у меня исправленно.
max:
p.s.
Код (Apache config):
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
<IfModule>-это в том смысле что на сервер файлы правильно загружаются, проверял.
Дмитрий Котеров:
Сравнил, скаченный файл больше
Ну и что же Вы тогда хотите?
Попробуйте посмотреть, чем именно они отличаются.
bæv:
Да, в бинарном.
А на сервер как закачивали?

Есть доступ к httpd.conf что там надо править?
Да, наверно, всё-таки ничего -- я на ссылку в первом посте внимания не обратил...
Хотя... всё же попробуйте добавить директивы AddType -- посмотрите в Денвере файлы httpd.conf и mime.types
max:
Переписал я себе httpd.conf и mime.types из Денвера полностью, но это не решило проблему.

Когда я переписал себе php.ini из Денвера, возникли проблемы с заголовками, выдает:

Warning: Cannot modify header information - headers already sent by (output started at d:\sapr\f_u.php:2) in d:\sapr\f_u.php on line 6

Хотя никаких заголовков я до этого не посылал(весь код см. выше).
Дмитрий Эсс:
Хотя никаких заголовков я до этого не посылал(весь код см. выше).
Вы уверены, что небыло вообще никакого вывода в браузер? Может у Вас пробел стоит перед <?php ?
Дмитрий Котеров:
...или после ?> в одном из подключаемых к скрипту файлов.
max:
Точно, так оно и было.

Спасибо.

Эта тема на forum.dklab.ru