下载header()后没有任何内容的文件


Files not having any content in after a header() download

我正在尝试创建一个下载,以便用户点击"down"它从他们的帐户下载某个文件到他们的计算机,我目前使用这个:

header('Content-Disposition: attachment; filename=' . basename("users/$username/$file_folder/$file_name"));
header("Content-Type:" .$file_type);
header("Content-Description: File Transfer");
header("Cache-control: private");
header("Connection: close");
header("Content-Length: ".$file_size);

问题是,文件正在下载,但它只是空的,文件中没有内容

之前的代码只是一个if()和一个带有数据库记录的while循环。

您错过了如下内容:(除非文件非常大,在这种情况下您将把它分割出来)

$filename = 'path/to/file/file_name.txt';
echo file_get_contents($filename);

或者,您可以用想要输出到文件中的数据填充一个变量,然后简单地回显它,如下所示:

$data = "begin'n";
$data .= "first line'n";
$data .= "another line'n";
$data .= "last line";
echo $data;

内容会放在标题之后。

该文件为空,因为您从未输出该文件。这些header调用只是头,您仍然需要一个文件主体才能正确下载。您可以使用file_get_contents回显文件内容。

header('Content-Disposition: attachment; filename=' . basename("users/$username/$file_folder/$file_name"));
header("Content-Type:" .$file_type);
header("Content-Description: File Transfer");
header("Cache-control: private");
header("Connection: close");
header("Content-Length: ".$file_size);
// echo the file, this will make the download work
echo file_get_contents("users/$username/$file_folder/$file_name"); 

发送标题后,您需要实际推出文件内容…

看到这个http://php.net/manual/en/function.file-put-contents.php