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

интернет компьютеры программирование php

Есть база данных MySQL, и есть веб-интерфейс к ней. Нужно, чтобы по нажатию на определённую кнопку отдавался на скачивание файл csv.
Есть скрипт, который генерит нужный csv, но если перейти на этот скрипт по ссылке, то csv просто открывается в браузере, показывается его содержимое. А нужно, чтобы он не открывался, а предлагалось его скачать. При этом крайне желательно, чтобы сам файл только отдавался на скачивание, но нигде не сохранялся на сервере. Это отчёт, который после скачивания совсем не нужен.

Примечание:
Малёк, это вот выдать такие заголовки, а после можно обычным echo выдавать содержимое документа? и при этом перенос строки это echo "\n"?

Примечание:
> header('Content-Type: text/csv; charset=utf-8');
> header('Content-Disposition: attachment; filename="report.csv"');

да, именно это и нужно. Большое спасибо!

Примечание:
упс… только хотела вопрос закрыть…

REDs, а почему Content-type: application/octetstream, когда text/csv на самом деле?
И длина обязательна? Если не указать, что будет?
Ответы:
и она не шарит в компах
ёпт.нет слов...
как-то так
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="report.csv"');
это если на пхп, на других языках суть та же - выдать нужный хедер
Ну должно работать, не проверял. Я таким методом псевдоэкселевские файлы создаю, и всё работает, открывается в экселе.
header('Content-type: application/octetstream');
header('Content-Length: ' . filesize('$out'));
header('Content-Disposition: attachment; filename="file.csv"');
application/octetstream - сохраняет как файл любой формат. Длина нужна чтобы браузер или менеджер понимал какой вес файла отдается, иначе просто информация о размере будет неизвестна.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.