Content-Disposition 下载错误文件

Content-Disposition downloading wrong file

我正在尝试下载一个文件。我正在使用 IE11。我已经尝试了几种方法来做到这一点。目前我正在尝试使用 header 和 Content-Disposition 方法。根据人们给出的其他答案,我尝试用几种不同的方式来做到这一点。它确实下载了。但是它没有下载我指向的文件,而是下载了它写入的文件。所以如果我告诉它在我的 test.php 文件中下载 example.txt。它只会下载 test.php.

这些是我试过的方法:

这个写在test.html:

<?php
$filename = "example.txt"
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
?>

我也试过把它变成一个按钮:

<a href="download.php?file=example.txt">BUTTON</a>

其中 download.php 是:

<?php
$file = $_GET['file'];  
header('Content-type: audio/mpeg');
header('Content-Disposition: attachment; filename="'.$file.'"');
?>

我试过这个:

<?php
header('Content-Type: application/download');
header('Content-Disposition: attachment; filename="example.txt"');
header("Content-Length: " . filesize("example.txt"));

$fp = fopen("example.txt", "r");
fpassthru($fp);
fclose($fp);
?>

还有这个:

header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($File));
header("Connection: close");

我尝试过更多细微的变化和混合搭配。所有人都有相同的问题,即 .html 或 .php 文件下载而不是 example.txt。有谁知道为什么会这样? IE11 不支持某些功能吗?我不认为这是一个语法错误,因为其中大部分是我从其他在线答案中复制的。我已尝试在此文件夹和其他文件夹中使用 example.txt 现有和不存在。

编辑:事实证明这些都有效,我只是用错了。我一直在尝试为 运行 这段代码制作隔离文件,这样我就可以在不受我网站上其他功能干扰的情况下对其进行测试,但这使得 php 文件没有它们实际需要的资源运行 正确。当我将代码放入网站上的实际文件中时,它运行良好。嗯

试试这个:

 header('Content-Description: File Transfer');
 header('Content-Type: application/octet-stream');
 header('Content-Length: ' . filesize($File));
 header('Content-Disposition: attachment; filename=' . basename($File));
 readfile($File);
 exit;