public function downloadFile()
{
$id = I('get.id');
$info = $this->getAll('downloads', array('id' => $id));
$info = current($info);
$filename = $info['path'] . $info['url'];
$file_name1 = $info['title'];
//处理中文名
$file_name2 = urlencode($file_name1);
$file_name = str_replace("+", "%20", $file_name2);// 替换空格
$extension = strtolower(substr($info['url'], strrpos($info['url'], '.')));
//header
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename=' . basename($file_name . $extension)); //文件名
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
header('Content-Length: ' . filesize($filename)); //告诉浏览器,文件大小
@readfile($filename);
}
主要是处理中文名和下面的header 其余信息根据自己代码调整