我正在尝试创建一个下载,以便用户点击"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