【问题标题】:Download text content from variable从变量下载文本内容
【发布时间】:2016-09-21 15:50:49
【问题描述】:

我创建了一个 php 脚本,它创建了一个文本字符串,并将其显示在屏幕上。 您知道如何仅将变量内容下载为文本文件吗?我已经尝试过这样的事情:

...
<body>
<?php
$download_me = "download me...";
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=test.txt");
echo $download_me;
?>
</body>
...

但这会创建一个包含整个 html 文档的文本文件:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>

<body>
download me...</body>
</html>

【问题讨论】:

  • 您发布的代码不应该那样做。您必须有其他一些与 HTML 相呼应的代码。
  • 您不能在同一个输出中混合下载和 HTML。
  • 粘贴代码末尾的错误*/ 暗示所有这些代码实际上在源代码中注释掉。这可以解释为什么它没有做你期望它做的事情......
  • @David:抱歉,*\ 只是复制粘贴失败。
  • @make:更新后的代码是一大语法错误。它既不是有效的 HTML 也不是有效的 PHP。听起来这里的问题不是代码不起作用,而是您缺少一些编写 PHP 代码的基本介绍性概念。

标签: php string variables text download


【解决方案1】:

这部分代码自己会做你想做的事:

<?php
$download_me = "download me...";
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=test.txt");
echo $download_me;
?>

但是,您将该代码包装在 HTML 代码中。这意味着两件事:

  1. 您在开始发送输出后尝试修改标头。
  2. 回显的文本不是唯一的内容,您还会输出围绕它的 HTML。

第一个问题可能是在您的服务器日志中产生错误。如果代码悄悄地忽略它并继续执行,那么第二个问题将解释您所看到的输出。您看到 HTML 是因为,嗯,您正在输出 HTML。

如果您不想输出 HTML,请从输出中删除 HTML。只需使用发送文本文件响应的代码即可。

【讨论】:

  • 感谢您的回复。我会尽快检查服务器日志。到你的最后一段:但是如何?我在同一个文件中使用用户输入创建整个内容。我不能只删除它。
  • @make:如果此代码是较大代码文件的一部分,您将有条件地执行此代码或其他代码,具体取决于您当前确定何时下载文件与输出 HTML。但是,通常最好将这些东西分成不同的服务器端资源,因为它们会产生非常不同的响应。
【解决方案2】:

我已经创建了一个包含这些内容的文件:

<?php
    $download_me = "download me...";
    header("Content-type: text/plain");
    header("Content-Disposition: attachment; filename=test.txt");
    echo $download_me;
?>

它成功了,它下载为 txt 文件。

【讨论】:

  • 是的,通常它可以工作,但如果你把内容放在它之前,它也会在下载的文本文件中
  • 之前不能有任何内容。
  • 这会将整个网页变成一个文本文件。
猜你喜欢
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多