Как можно выдать в браузер файл под другим именем?

dantistus

Новичок
Как можно выдать в браузер файл под другим именем?

Суть проблемы: у меня есть файл, пусть будет report.php. В него передаются данные POST'om. В ответ он высылает header('Content-type: text/plain') и далее следует .csv файл. Это все нормально работает. Но этот файл сохраняется на компьютере пользователя с именем "report.php". Подскажите плз, как сделать так, чтоб я мог сам задать его имя? Вообще мне надо называть ег опо дате, типа report051205.csv, report061205.csv и т.д.
Заранее спасибо.
 

kamatoz

Новичок
Re: Как можно выдать в браузер файл под другим именем?

Content-Disposition
(см. в rfc2616)
 

Mastilior

Новичок
А что, если при указании в Content-Disposition имени файла, в окошке Сохранения остается нормальное имя файла, но меняется расширение? Например, "music.mp3" сохраняется как "music.mpeg"... ?
 

dantistus

Новичок
Допустим, у тебя есть файл - music.php - и ты хочешь, чтобы он генерировал картинку и посылал ее клиенту под именем 'qqq.jpg'. Тогда ты генерируешь в скрипте картинку и посылаешь такой заголовок:

header('Content-disposition: attachment; filename=qqq.jpg');

Если ты этого не сделаешь, файл будет сохраняться пользователю на машину как music.php, а это не очень то удобно.
 

Mastilior

Новичок
header('Content-disposition: attachment; filename=qqq.jpg');

В принципе, так и делается. Но браузер (Opera 7.54) все равно предлагает сохранять файл в другом формате.

Может ли это быть из-за того, что заголовок Content-Type (со значением "audio/x-mpeg") приходит после Content-Disposition ?

Строчки заголовки отправляются отдельными командами. Т. е.
@header("Content-Type: ...");
...
@header("Content-Disposition: ...");

а не одним вызовом функции header...
 
Сверху