Content-Disposition下载错误文件

时间:2017-03-01 15:15:36

标签: php html internet-explorer-11 content-disposition

我正在尝试下载文件。我正在使用IE11。我尝试了几种方法来做到这一点。目前我正在尝试使用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现有且不存在,在此文件夹和其他文件夹中。

编辑:事实证明这些都是有效的,我只是错误地使用它们。我一直试图制作孤立的文件来运行这段代码,所以我可以测试它而不会受到我网站上其他功能的干扰,但是这样就没有实际运行所需的资源了。当我将代码放入网站上的实际文件时,它完美地工作。 SMH

1 个答案:

答案 0 :(得分:1)

试试这个:

 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;