4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 3 декабря 2006 21:27
Некоторое время назад писал скрипт, который позволяет скачивать файл с сервера, и столкнулся со следующей проблемой: в броузере Opera имя файла передавалось некорректно (точнее, некорректно передавалось расширение файла — оно заменялось на .htm), особено часто это наблюдается при скачивании файла с нажатой клавишей Shift.
Как выяснилось, проблема заключается в следующем: Opera 9 (а может и более ранние) корректно воспринимает заголовок content-disposition только если он написан исключительно строчными буквами, а имя файла должно быть взято в кавычки.
В итоге вывод заголовка должен выглядеть примерно так:
if (!$file[1]) header("Content-Type: application/octet-stream");
else header("Content-Type: ".$file[1]);
header("content-disposition: attachment; filename=\"".$file[2]."\"");
(В $file[1] хранится тип файла, в $file[2] — его имя.)
Также рекомендуется применять на имя файла функцию urlencode, чтобы избежать проблем с русскими буквами или пробелами в имени файла. (У меня она применялась на этапе загрузки файла.)
Оффтопик: А еще лучше применять принудительную транслитерацию, русские имена файлов — это зло, от которого надо отучать пользователей.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
|