При скачивании архива с FreeBSD-сервера через sms-замок, происходит перекодировка архива в UNIX кодировку повреждением архива. Исходная кодировка windows. Как с этим бороться ? Код sms-замка: PHP: <?php /* Нужно так же сказать, что для подобных проектов обяззательно нужно включить опцию * «Автораспознавание ссылок», при этом обратившись к одному из номеров журнала, * пользователь не сможет обратится к другому по тому же паролю (при первом обращении * пароль получает привязку к адресу). */ // каталог, где лежат выпуски журнала (не доступен через web) $MAGAZINE_DIR = '/usr/home/test/files'; // префикс имени файла на вашем сервере $S_PREFIX = ''; // префикс имени файла отдаваемый пользователю // (в большинстве случаев можно оставлять такое же как и $S_PREFIX) $U_PREFIX = ''; // расширения файлов (можно оставить пустым) $FILE_EXTENSION = 'rar'; // тип содержимого (для zip -- application/zip, для exe -- application/octet-stream) // [url=http://www.iana.org/assignments/media-types/application/]http://www.iana.org/assignments/media-t ... plication/[/url] $CONTENT_TYPE = 'application/rar'; // номер выпуска журнала // (так же вместо номера журнала можно использовать имя файла, // если цель проекта раздавать просто различные файлы не подходящие // под общую схему) $number = $_GET['number']; // полное имя файла, включая путь $fext = (strlen($FILE_EXTENSION) > 0) ? '.'.$FILE_EXTENSION : ''; $shortname = $S_PREFIX.$number.$fext; $filename = $MAGAZINE_DIR.'/'.$shortname; // посылаем заголовки для браузера header('Content-type: '.$CONTENT_TYPE); header('Content-Disposition: attachment; filename="'.$U_PREFIX.$number.$fext.'"'); header('Content-Length: '.filesize($filename)); // передаём содержимое файла readfile($filename); ?>
Валерия Видимо, имеет место быть Русский Опачъ... нужно что-то добавить в .htaccess чтобы он не трогал кодировку у отдаваемых файлов. К сожалению, заклинания не помню
Если Апач, то в .htaccess нужно: <FILES *.rar> CharsetDisable On </FILES> А можно еще и серверу указать, в какой кодировке загружаемый файл (опять же в .htaccess): CharsetSourceEnc windows-1251
Штаны, куда именно это прописать, .htaccess в какой папке ? Ну я вставила в .htaccess в /usr/home/test/files, где лежат архивы, но ничего не изменилось Сам сайт находится в /usr/home/web/www. Кстати, если скачать просто через фтп, то никаких проблем нет.
Пропиши в .htaccess который находится по адресу $_SERVER[‘SCRIPT_FILENAME’] У тебя это скорее всего будет /usr/home/web/www + дальше до папки в которой лежит этот скрипт.
Валерия Ага, это вроде оно. Только убери <FILES *.rar> и </FILES>. Иначе эта директива не будет работать для PHP скриптов. И звездочек там не должно быть, это не Windows
Чё это не должно? Звездочки работают и наFreeBSD. А вообще, лучше не так сделай, как я тебе до этого советовал. А вот так: пропиши в .htaccess который находится там где и php скрипт вот это: Код (Text): <FILES *.rar> AddDefaultCharset Windows-1251 </FILES> Этим ты укажешь серверу, что файлы *.rar нужно отдавать в кодировке Windows-1251. Эта штука будет работать при отдаче файлов *.rar этим скриптом и скриптами которые находятся с ним рядом, т.е. на которые действует твой .htaccess
Плохо дело Тогда дополни 23-ю строчку указанием кодировки файла: PHP: $CONTENT_TYPE = 'application/rar; charset=windows-1251';