1

mysql の結果を Excel に出力するスクリプトがありますが、これはすべてのブラウザで問題なく動作しています。ただし、スクリプトが iPad でも動作し、Safari で Excel を開く必要があります。この時点で、スクリプトは iPad で「ハング」し、ロードし続けます。これはヘッダーの問題ですか?現時点でのコード ヘッダー:

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");
4

1 に答える 1

2

どうやら、問題の原因となったのは application/vnd.ms-excel ヘッダーでした。octet-stream に設定すると問題は解決しましたが、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'); 
}
于 2012-07-13T10:01:13.240 に答える