Как показать диалоговое окно «Сохранить как» с использованием PHP для текстовых файлов - PullRequest
8 голосов
/ 09 апреля 2009

Как я могу показать диалоговое окно «Сохранить как» с использованием PHP, которое попросит пользователя загрузить строку в виде текстового файла? По сути, я получу некоторые значения из базы данных, и тогда я захочу загрузить файл .txt, содержащий эти данные.

Ответы [ 4 ]

24 голосов
/ 09 апреля 2009

Это должно работать:

header('Content-type: text/plain');
header('Content-disposition: attachment; filename="test.txt"');
6 голосов
/ 09 апреля 2009

Просто чтобы расширить ответ @Emil H:

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

3 голосов
/ 09 декабря 2009
<?
header ("Content-Type: application/download");
header ("Content-Disposition: attachment; filename=$yourfile");
header("Content-Length: " . filesize("$yourfile"));
$fp = fopen("$yourfile", "r");
fpassthru($fp);
?>
2 голосов
/ 09 апреля 2009

Чтобы уточнить использование header () :

Официальное руководство по PHP :

header () используется для отправки необработанного HTTP-заголовка. См. Спецификацию HTTP / 1.1 для получения дополнительной информации о заголовках HTTP.

Помните, что header () должен вызываться перед отправкой любого фактического вывода, либо обычными тегами HTML, пустыми строками в файле, либо из PHP. Это очень распространенная ошибка при чтении кода с include () или require () , функциями или другой функцией доступа к файлу, с пробелами или пустыми строками, которые выводятся перед header () вызывается. Та же проблема существует при использовании одного файла PHP / HTML.

Так что, по сути, вы меняете всю страницу, когда используете header (). Убедитесь, что единственное содержимое, которое вы выводите, это строка.

...