file download (типа upload наоборот)

DiMA

php.spb.ru
Команда форума
file download (типа upload наоборот)

Если кто не в курсе топика:
Есть страница1, на которой есть ссылка на страницу2. Обычная ссылка. При нажатии на ссылку, браузер не переходит на стр2, а вываливает окошко с просьбой сохранить файл на диск. Он это делает и без влияния программиста, но только если стр2 - это файл с неким расширением (.zip, .exe, и пр.). Стр2 имеет расширение .phtml и является программой на ПХП.

Теперь о глюке.
$filename="Имя_с_русскими_буквыми.html"; // без пробелов, на всяк. случай
header("Accept-Ranges: bytes");
header("Content-Length: ".strlen($x));
header("Content-Type: x-application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");

глюк в том, что на половине тестируемых мной компьютеров файл предлагают сохранить под моим именем. На других - из имени файла "Русские_Буквы_и-тире.html" комп делает "_ _ - .phtml" (в середине - по 2-3 пробела, хоть слова большие). Закономерность не выявлена. IE & NN работают вметсе - либо глючат, либо нет. Тестилось на 95,98,NT,W2K.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Х...во искал. Или не в том RFC...
Ибо оно там есть (RFC 2616, разделы 15.5 и 19.5.1)

bitkid писал(а):
-------------------------------
Я недавно тоже искал Content-Disposition в RFC на HTTP/1.1 - ни одного попадания. Поэтому вообще-то работать такое не должно, а то, что всё-таки работает - спасибо нетскапе и мсие за инициативу.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
1) header("Content-Type: application/octet-stream");
2) можно попробовать filename давать без кавычек или делать urlencode()
3) M$IE 4 не понимает Content-Disposition. Вообще. Это баг.
 

DiMA

php.spb.ru
Команда форума
Проект делается для таких тормозов, которые скорее всего просто не знают, как клавиатуру в виндовсе с русского на англ. переключить... Я уже сделал выбор для имени файла: переводить на анг. вариант или не надо, но глюку-то не легче!

1. по application/octet-stream не работает ИЕ (только НН), при x-application/octet-stream -- все ок!

2. urlencode(), кавычки, utf8_encode(), TTF (текст -> ྵ), менять кодировку имени файла пробовал + некоторые комбинации. Работает только без этих функций. Типа, прежде чем написать, я провел поиски по конфе и перепробовал разные советы.

3. IE 4 никто не юзает (можно забить), только NN 4 или IE 5

4. наличие "ru" на странице настроек языка браузера на работоспособность не отражается. Просить юзера сделать поддержку русского языка не логично. Только в Виндах разумеется стоит "русский" и сами они русские.

5.
> Я недавно тоже искал Content-Disposition в RFC на HTTP/1.1 - ни одного
> попадания. Поэтому вообще-то работать такое не должно, а то, что всё-таки
> работает - спасибо нетскапе и мсие за инициативу

а то, что ВСЕ браузеры автоматом предлагают сохранить файлы с расширением .ехе на диск юзера, тоже инициатива? Надо просто прикинуться .ехе файлом с русскими буквами.

-------

Если есть еще идеи, что можно попробовать, жду... Спасибо.
 
Сверху