шттп хидерсы

Alex2003

Новичок
Почему меняет имя файла при download?

Вопрос:

header("Content-Disposition: inline; filename=$filename\r\n");
header("Content-Type: application/octet-stream\r\n");
header("Content-Type: application/force-download\r\n");
header("Content-Type: application/download\r\n");
header("Content-Transfer-Encoding: binary\r\n");
//-- send file.
readfile("filename");

Какого мне Експлорер предлагает сохранить файл как readme[1].zip, если $filename = "readme.zip"?

Половина headers зря написал, но, надеюсь, дело не в них...
 

Mammoth

Guest
Попробуй вот так:

PHP:
header("Content-Type: plain/text");
header("Content-Disposition: attachment; filename=$filename");
readfile($filename);
У меня данный пример работает...
 

Alex2003

Новичок
Них... не получилось
Результат тот же, но табличек напихоло больше...
Сперва Открыть/Сохранить download.php, потом Открыть/Сохранить readme[1].zip.

Что за хрень???
 

Alex2003

Новичок
Кстати, эта хрень только если имя_файла - кирилицей. С readme.zip - нет проблем! А реадми.zip -> реадми[1].zip.

Может Apache???
 

Unregistered

Guest
шттп хидерсы

Почему меняет имя файла при download?

>Вопрос:

>header("Content-Disposition: inline; >filename=$filename\r\n");
>header("Content-Type: >application/octet-stream\r\n");
>header("Content-Type: >application/force-download\r\n");
>header("Content-Type: >application/download\r\n");
>header("Content-Transfer-Encoding: >binary\r\n");
>//-- send file.
>readfile("filename");

>Какого мне Експлорер предлагает >сохранить файл как readme[1].zip, если >$filename = "readme.zip"?

>Половина headers зря написал, но, >надеюсь, дело не в них...

а где вообще можно почитать (не рфц, а на понятном языке) какоай часть хидера что означает и какие есть для чего хотябы самые робщеупотребительные
 

Mammoth

Guest
попробуй добавить в начало

PHP:
header("Cache-control: private");
 

Mammoth

Guest
На "понятном" языке - не знаю, а так поле Content-Disposition описывается в RFC 2183...
 

Alex2003

Новичок
Спасибо!
Уже лучше, теперь зип открывается, ести ткнуть Открыть на месте, но имя файла....
Где зачитать про headers прямо щаз можно? А то на этом компе нет нихрена...
 

Mammoth

Guest
А если так:

PHP:
header("Content-type: application/force-download");

if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE"))
  header("Content-Disposition: filename=$myfile" .
"%20"); // For IE
else
  header("Content-Disposition: attachment; filename=$myfile");
	// For Other browsers
 

Mammoth

Guest
Можешь просто попробовать убрать слово attachment (inline). Скорее всего у тебя стоит MSIE, а у M$ свой взгляд на рекомендации и стандарты...
 

Alex2003

Новичок
Результаты тестирования:
header("Content-Disposition: filename=$myfile". "%20\r\n");
не работает (имя меняет прямо на "реадме[1].zip%20")
Пока остановился так:

header("Cache-control: private");
header("Content-type: application/force-download");
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE"))
header("Content-Disposition: filename=$filename.zip" ."\r\n"); // For IE
else
header("Content-Disposition: attachment; filename=$filename.gz");
// For Other browsers

А можно, чтоб брузер не предлагал Открыть/Сохранить, а сразу открывал в ВинЗип?
 

Mammoth

Guest
> А можно, чтоб брузер не предлагал Открыть/Сохранить, а сразу открывал в ВинЗип?

Нет, конечно. То, что ты хочешь, является security bug!
 

Mammoth

Guest
Хотя все зависит от броузера и от его настроек...
 

Mammoth

Guest
> Пока остановился так:

Значит все работает?
 

Alex2003

Новичок
Хм... От каких нас тое к? ;-) Щаз мы их... Но запускает он Ексель, если я его кормлю файлами *.xls??? Пусть и *.zip кушает. Или WinZip - security bug???
 

Alex2003

Новичок
Значет юзеру напишу: ткни на ссылку, выбери открыть на месте, найдите в вашей версии винЗипа кнопень извлечь...

Руководство пользователя напишу, будет еще один раздел на сайте: Как загрузить че-нибудь отсюда!
 

Mammoth

Guest
Автор оригинала: Alex2003
Хм... От каких нас тое к? ;-) Щаз мы их... Но запускает он Ексель, если я его кормлю файлами *.xls??? Пусть и *.zip кушает. Или WinZip - security bug???
Если есть такое желание, зайди в ствойства папки -> типы файлов, найди тип .zip, далее - изменить и убери у него флажок "Подтверждать, нужно ли открывать после загрузки". Пользуйся, если так надо...
 
Сверху