【问题标题】:php code not working after header code for downloading files用于下载文件的标头代码后php代码不起作用
【发布时间】:2016-09-28 19:55:25
【问题描述】:

我有这段代码,由于某种原因,在这强制下载文件代码之后,下一个 php 代码没有运行..

          $file = "2.jpg";
          header("Content-Type:application/force-download");
          header("content-disposition:attachment; filename=".$file);
          readfile("$file");      

          echo "hello"

例如echo "hello" 命令不起作用

【问题讨论】:

  • 你怎么知道回显不起作用?您下载的文件的内容是什么?
  • 感谢您抽出宝贵的时间......好吧,它是一个 jpg 图像......我猜 echo "hello" 不起作用,因为我没有看到 "hello"
  • 你是什么意思看到呢?您的代码现在看起来“你好”的方式将在 jpg 中结束。
  • 脚本输出的所有内容都将放入下载的文件中。

标签: php header-files downloading-website-files


【解决方案1】:

由于 HTTP 协议的工作方式,标头的内容 - 在来自服务器的回复中 - 用于确定如何处理回复正文的内容。

您正在添加标题,告诉浏览器(或任何接收回复的设备)将内容视为 JPG 数据。 所有的内容。所以这就是发生的事情。您不会同时发送数据和一些 HTML/文本来显示。发送页面或 JPG 内容。

如果您查看下载的图像文件的内容,它的末尾应该有“hello”。

更新:

如果您愿意,可以使用元标记首先显示一条消息,然后重定向到您的下载 URL。示例中的 2 是在重定向发生之前等待的秒数。

<!doctype html>
<html lang="en">
<head>
  <meta http-equiv="refresh" content="2;URL='http://example.com/readfile.php'" />
  <title>You will soon be downloading</title>
</head>

<body>
  Hello
</body>
</html>

这是最干净的方式。如果您不想在文件下载完成之前显示消息,您也可以这样做,但是您必须求助于 Javascript(AFAIK)。这有点棘手。

【讨论】:

  • 非常感谢...那么有没有办法先下载文件,然后继续在浏览器上显示代码
  • @sahilsanwal 更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 2012-10-19
  • 2013-04-06
  • 2013-12-05
  • 2022-01-18
相关资源
最近更新 更多