Создать текстовый файл для скачивания на лету - PullRequest
45 голосов
/ 07 декабря 2010

Обновление # 1

То, что было опубликовано ниже, предназначено для получения его для вывода файла.Однако он выводит строковые данные, за которыми следуют остальные формы HTML.Есть ли способ остановить то, что помещается в файл и что только что отображается в браузере.

Обновление # 2

Только что добавлено exit() и все работаетхорошо.Спасибо!

EOU

Привет,

Я смотрел вокруг и видел несколько похожих вещей, но не совсем понял, чтоМне нужно сделать, чтобы полностью выполнить задачу.

На данный момент у меня есть форма, которую пользователь предоставляет некоторые детали.При отправке он отправляется обратно самому себе и обрабатываются переменные POST.У меня есть готовый HTML-шаблон для размещения информации, которая прекрасно работает, и я просто делаю str_replace.

Сейчас я пытаюсь экспортировать этот файл в виде файла для загрузки пользователю в виде простого текста.документ.Таким образом, конечным результатом является то, что пользователь нажимает кнопку «Отправить» в форме, и после этого у него открывается всплывающее окно загрузки с измененной веб-страницей в виде файла .txt.

Насколько я понимаю, мне нужно что-то сделать, используя функциональность заголовков HTTP.,Что именно, хотя для достижения того, чего я хочу, я не уверен.Я хочу, чтобы файл был доступен только один раз, но я предполагаю, что он должен быть где-то изначально сохранен, чтобы пользователь мог загрузить файл, который затем нужно будет очистить после того, как он вручную?

Любая помощь или пункты были бы хороши!Спасибо.

Ответы [ 4 ]

70 голосов
/ 07 декабря 2010

Нет необходимости хранить его где-либо.Просто выведите содержимое с соответствующим типом содержимого.

<?php
    header('Content-type: text/plain');
?>Hello, world.

Добавьте расположение содержимого, если вы хотите вызвать запрос на загрузку.

header('Content-Disposition: attachment; filename="default-filename.txt"');
28 голосов
/ 08 мая 2013

Используйте приведенный ниже код для генерации файлов на лету.

<? //Generate text file on the fly

   header("Content-type: text/plain");
   header("Content-Disposition: attachment; filename=savethis.txt");

   // do your Db stuff here to get the content into $content
   print "This is some text...\n";
   print $content;
 ?>
19 голосов
/ 07 декабря 2010

Проверьте принятое решение этого SO вопроса . Замените свое имя файла на basename($File) и измените размер файла ($ File) на strlen($your_string). (Вы можете использовать mb_strlen на тот случай, если строка содержит многобайтовые символы.)

0 голосов
/ 04 марта 2016
<?php

    header('Content-type: text/plain');
    header('Content-Disposition: attachment;
            filename="<name for the created file>"');
    /*
    assign file content to a PHP Variable $content
    */
    echo $content;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...