header имя файла - вместо пробела подчеркивание

moggucci

Guest
header имя файла - вместо пробела подчеркивание

Сценарию download.php даю файл на загрузку.
Если делаю имя файла так:
PHP:
header("Content-Disposition: attachment; filename=\"$file\"");
то IE7.0 заменяет пробелы в названии файла на символ подчеркивания. А FreeDownloadManager воспринимает правильно, не переделывает пробелы в подчеркивания.
Если делаю имя файла так:
PHP:
$file = rawurlencode($file);
header("Content-Disposition: attachment; filename=\"$file\"");
то IE7.0 воспринимает правильно, с пробелами, но FreeDownloadManager вместо пробелов подставляет %20 - т.е. не расшифровывает строку.

Как сделать так, чтобы все программы скачивали файл с правильным именем, с пробелами?

-~{}~ 11.03.07 03:12:

К слову, если отдать файлы не скриптом, а прямой ссылкой на файл, естественно путь закодированный rawurlencode, то и IE7.0, и FreeDownloadManager правильно распознают имя файла - с пробелами.
 

moggucci

Guest
Апокалипсис, не могу. Более того, файлы с русскими именами есть. Из-за этого сыр-бор с отдачей скриптом.
К слову, если отдать файлы не скриптом, а прямой ссылкой на файл, естественно путь закодированный rawurlencode, то и IE7.0, и FreeDownloadManager правильно распознают имя файла - с пробелами.
Так все-таки, что делать?
 

moggucci

Guest
Юзеру хочу отдавать файлы с "правильными" именами - с пробелами и по-русски, без транслитерации.
Так все-таки, проблема неразрешима?
 

iceman

говнокодер
%20 это вроде и есть символ пробела
FreeDownloadManager из-за этого не может скачать фаил?

так сделай для FreeDownloadManager одно условие для IE 7.0 другое (хотя насчет других браузеров - незнаю)
 

moggucci

Guest
%20 и есть символ пробела, все правильно.
FreeDownloadManager - не браузер, а качалка, а-ля FlashGet и прочие.
Думаю, что посылать разные хедеры не получится. Ведь сначала IE предлагает сохранить файл (клиент - IE), а уже потом по нажатию кнопки сохранить его цепляет FreeDownloadManager.
Хотя, стоп! FreeDownloadManager сначала видит download.php, и потом "запускает" его и уже видит файл. Значит может и получится.
Как определить клиента? Какую функцию смотреть?
 
Сверху