4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
 Откуда: Москва Всего сообщений: 3031 Рейтинг пользователя: 75 Дата регистрации на форуме: 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, чтобы избежать проблем с русскими буквами или пробелами в имени файла. (У меня она применялась на этапе загрузки файла.) Оффтопик: А еще лучше применять принудительную транслитерацию, русские имена файлов — это зло, от которого надо отучать пользователей.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
|