【问题标题】:How to show 'Save as' dialog box using PHP for text files如何使用 PHP 为文本文件显示“另存为”对话框
【发布时间】:2010-10-18 10:32:09
【问题描述】:

如何使用 PHP 显示“另存为”对话框,要求用户将字符串下载为文本文件?基本上我会从数据库中检索一些值,然后希望能够下载包含这些数据的 .txt 文件。

【问题讨论】:

  • 只是把它扔在这里,因为除了 emil 的回答之外,我还需要它......换行:echo "\r\n";

标签: php http mime-types


【解决方案1】:

这应该可行:

header('Content-type: text/plain');
header('Content-disposition: attachment; filename="test.txt"');

【讨论】:

    【解决方案2】:

    只是为了扩展@Emil H 的答案:

    使用这些标头调用仅适用于新请求的上下文。您需要实现一些东西,让您的脚本知道它何时实际发送文件,而不是何时显示告诉用户下载文件的表单。

    【讨论】:

      【解决方案3】:

      澄清header()的用法:

      Official PHP Manual:

      header() 用于发送原始 HTTP 标头。有关 HTTP 标头的更多信息,请参阅 » HTTP/1.1 规范。

      请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是通过 PHP。使用 include()require() 函数或其他文件访问函数读取代码并输出有空格或空行是非常常见的错误在调用 header() 之前。使用单个 PHP/HTML 文件时也存在同样的问题。

      所以基本上,当您使用 header() 时,您正在更改整个页面。确保您回显的唯一内容是字符串。

      【讨论】:

        【解决方案4】:
        <?
        header ("Content-Type: application/download");
        header ("Content-Disposition: attachment; filename=$yourfile");
        header("Content-Length: " . filesize("$yourfile"));
        $fp = fopen("$yourfile", "r");
        fpassthru($fp);
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-13
          • 2012-10-22
          • 2015-03-28
          • 1970-01-01
          • 2013-11-09
          • 1970-01-01
          • 2021-08-20
          相关资源
          最近更新 更多