2012-07-12 71 views
0

我有一个脚本来输出一个mysql结果到excel,在所有浏览器中工作得很好。 但是,我需要脚本才能在iPad上工作,打开Safari中的Excel。此时,脚本只是“挂在”iPad上,它不断加载。这是一个头问题? 代码头在这一刻:在iPad上导出到Excel

header('Content-Transfer-Encoding: binary'); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header('Content-Type: application/vnd.ms-excel'); 
//header("Content-Type: application/octet-stream"); 
header('Content-Disposition: attachment;filename="' . $_POST['Client_FirstName'] . ' ' .  $_POST['Client_LastName'] . ' ' . $_POST['month'] . '-' . $_POST['year'] . '.xlsx"'); 
header('Cache-Control: max-age=0'); 
header("Pragma: public"); 
header("Expires: 0"); 
+0

据我所知,IOS上的Safari无法处理文件下载。 – Michi 2012-07-12 10:38:19

+0

并在新窗口中打开它? – Borniet 2012-07-12 10:38:59

+0

既不,现在我不认为没有使用本机应用程序的解决方案。 – Michi 2012-07-12 10:41:51

回答

0

显然,这是应用程序/ vnd.ms - Excel的头引起的问题。 将它设置为八位字节流解决了这个问题,但后来在IE8中造成了问题。 所以我用这个代码彻底解决了这个问题:

if(stristr($_SERVER['HTTP_USER_AGENT'], 'ipad') OR stristr($_SERVER['HTTP_USER_AGENT'],  'iphone') OR stristr($_SERVER['HTTP_USER_AGENT'], 'ipod')) 
{ 
    header("Content-Type: application/octet-stream"); 
}else{ 
    header('Content-Type: application/vnd.ms-excel'); 
}