0

我试图通过 PHP 进行“强制下载”,但我得到的只是奇怪的符号。

我尝试添加标题(“application/typeofmyfile”)和标题(“Content-Disposition”)......以及来自这里的许多其他帖子的许多其他内容,但没有

我有这个:

$f_location = "path/myfile.nl2pkg";
$f_name = "myfile.nl2pkg";


header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$f_name); //Here also tried basename($f_name) but nothing
header("Content-Length: ".filesize($f_location));    
header("Content-Transfer-Encoding: binary");

我这样做是因为当用户单击“下载”按钮时,我使用 ajax 将他发送到页面以强制下载,将一些数据放入数据库中,然后刷新主页。

这是我第一次处理标题,对于我阅读的内容,不知道我是否做错了什么。

4

1 回答 1

0

您的标头代码似乎很好。问题似乎出在其他地方。

要调试您的代码,请使用headers_sent来确定是否已发送标头。您还可以使用headers_list查看已发送的标头。

if (headers_sent()) {
  var_dump(headers_list());
  die('Headers have already been sent');
  exit;
}

如果您在定义标题之前使用它,您可能会找到问题的根源。

于 2014-04-23T11:29:21.403 回答