我有一个强制下载文件的问题。
我正在使用PHPExcel根据从我们的数据库中提取的信息创建一个xls文件。这一切都运行正常,Excel文件可以根据需要运行。
然后我尝试使用以下函数强制下载创建的文件。但是它下载网页而不是文件。
目前正在开发Win XP SP3,Notepad ++,XAMPP(Apache 2.4.3,PHP 5.4.7)。
**函数
public function downloadfile($file){
if(file_exists($file) && is_file($file)){
//ob_start();
echo $file;
echo "in file exists";
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
//ob_end_flush();
}else
echo "file or location does not exist <br>";
echo $file;
}
任何帮助将不胜感激。 提前致谢
答案 0 :(得分:2)
如果是excel文件,那么只需重定向到该网址,默认情况下会要求下载文件。
header("Location: http://site.com/path/to/file/filename.xlsx");
/* Make sure that code below does not get executed when we redirect. */
exit;
如果在javascript中给出
location.href = 'http://site.com/path/to/file/filename.xlsx';
答案 1 :(得分:1)
header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header("Content-Disposition: inline; filename=\"" . $fileName . ".xls\"");
header("Pragma: no-cache");
header("Expires: 0");
readfile($filePath);
试试这个