Сохранение в файл не работает через SSL

  • Автор темы Автор темы Aptem
  • Дата начала Дата начала

Aptem

Новичок
Сохранение в файл не работает через SSL

Привет, всем.

Такой вопрос. Вот есть у меня такой скрипт:
PHP:
  $output = fopen ( 'php://output', 'w' ) or die ( "Can't open php://output" );
  $tmp = "Content-Disposition: attachment; filename=\"example.csv\"";
  header ( 'Content-Type: application/csv' );
  header ( $tmp );

  $foo = "bla bla bla";
  fwrite ( $output, $foo );

   fclose ( $output ) or die ( "Can't close php://output" );

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

В чем ошибка? Как лечить?

Спасибо за внимание.
 
ошибка в браузере, это раз.

используй echo вместо записи в php://output, он бинарнобезопастный
 
И правда в Opera и Mozilla все работает!
Неужели IE и правда такой глючный.

А как быть? У меня все пользователи на IE сидят. И врят ли будут другим браузером пользоваться.

Примечание: "у меня все пользователи" - локальная сеть :)
 
У меня скрипт через SSL прекрасно отдает фалы на всех браузерах через readfile. Может действительно сменить способ выдачи файла?
 
Спасибо за ответы.

А как отдать файл по-другому? Я просто с таким не встречался никогда. Как использовать readfile? Я так понимаю использовать readfile нужно когда файл уже есть на сервере. А я же формирую его на лету.
 
Автор оригинала: dimagolov
Aptem, а чам банальное echo тебя не устраивает?
Я попробовал вот так:
PHP:
header('Content-Disposition: attachment; filename="users.csv"');
header('Pragma: no-cache');
header('Content-type: text/x-comma-separated-values');
echo $csv_text;

Эффект тот же. Браузер (только IE) ругается на недоступность файла.
 
поищи по форуму, обсуждалось, был какой-то воркэраунд.
 
Да везде примеры только с echo или подобное этому. А как отдать файл по http? А в моем примере он как отдается? Не по http?
 
То есть вы имеете ввиду страницы грузить через ssl, а файлы отдавать не шифруя?
 
Действительно по https через echo не выдает.

Aptem
Убери header('Pragma: no-cache'); или напиши header("Pragma: public");
Похоже IE не может ракодировать данные, не сохранив их на компе...
 
Убери header('Pragma: no-cache'); или напиши header("Pragma: public");
Похоже IE не может ракодировать данные, не сохранив их на компе...
Совершенно верно. Все заработало! Нужно было прагма паблик поставить. Спасибо за помощь, MaxiStyle.

Вот рабочий код формирования файла на лету при подключении через SSL:
PHP:
header('Content-Disposition: attachment; filename="users.csv"'); 
header('Pragma: public'); 
header('Content-type: text/x-comma-separated-values'); 
echo $csv_text;

Еще раз всем спасибо!
 
Сверху