创建一个文本文件,以便即时下载

时间:2010-12-06 22:51:43

标签: php http-headers

更新#1

下面发布的内容是让它输出文件。它正在做的是输出字符串数据,然后输出其余的表单HTML。有没有办法阻止放入文件的内容以及刚刚显示给浏览器的内容。

更新#2

刚刚添加exit(),一切正常。谢谢!

EOU

您好,

我一直在环顾四周,看到一些类似的事情,但并没有完全掌握我需要做些什么才能完全完成任务。

目前我有一个用户提供一些细节的表单。在提交时,它会回发给自己并处理POST变量。我有一个预制的HTML网页模板,可以放入信息,只需要做一个str_replace就可以正常工作。

我现在要做的是将其作为下载导出到纯文本文档中的用户。因此,最终结果是用户单击表单上的提交,然后打开下载弹出窗口,将修改后的网页作为.txt文件。

据我所知,我需要使用HTTPs头功能做一些事情。究竟要实现我想要的东西我不确定。我只希望文件可用一次,但我认为它必须存储在某个地方,供用户下载,然后需要在手动后进行清理?

任何帮助或积分都会很棒!感谢。

4 个答案:

答案 0 :(得分:68)

无需将其存放在任何地方。只需输出具有适当内容类型的内容。

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

如果您希望触发下载提示,请添加内容处置。

header('Content-Disposition: attachment; filename="default-filename.txt"');

答案 1 :(得分:27)

使用以下代码即时生成文件..

<? //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;
 ?>

答案 2 :(得分:19)

结帐this SO question's accepted solution。用basename($File)替换您自己的文件名,并将文件大小($ File)更改为strlen($your_string)。 (如果字符串包含多字节字符,您可能需要使用mb_strlen。)

答案 3 :(得分:0)

<?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;
?>