对于我的生活,我看不出原因,但它有正确的文件名和所有,但文件本身在下载后是空的。据我所知它到达正确的位置,数据库也有正确的信息。
function download()
{
global $session,$project,$config,$args;
$fid = $args[0];
$query = query('SELECT * FROM files WHERE id = ?',$fid);
if(num($query) == 1)
{
$file = fetch($query);
//$happyfix = "http://imengine.gofreeserve.com/admin";
$filename = URL . "/_files/{$file->in_project}/{$file->in_folder}/" . md5($fid) . ".{$file->extension}";
//$filename = $happyfix . "/_files/{$file->in_project}/{$file->in_folder}/" . md5($fid) . ".{$file->extension}";
if(ini_get('zlib.output_compression'))
{
ini_set('zlib.output_compression', 'Off');
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $file->mimetype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"".$file->name . '.' . $file->extension."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
}
else
{
redirect('That file does not exist','','error');
}
}
答案 0 :(得分:2)
在发送文件数据之前,您没有发送标头。更改最后几行以添加
header("Content-Length: ".filesize($filename));
ob_clean();
flush();
readfile("$filename");
上的示例
答案 1 :(得分:0)
改变这个:
header("Content-Type: $file->mimetype");
为:
header("Content-Type: {$file->mimetype}");