phpexcel导出到输出流的文件,如何兼容各个平台?
最近在做企微开发,碰到文件导出问题有点头疼,浏览器还好,但是碰到手机的话,就有很多问题,安卓微信里面直接打不开,苹果微信里面打开是空文件。下面是代码,downloadHeaders函数主要处理中文文件名问题
function downloadHeaders($filename, $charset = 'UTF-8')
{
// 兼容各浏览器下载文件名乱码问题
if (preg_match("/MSIE/", $_SERVER["HTTP_USER_AGENT"])) {
$filename = urlencode($filename);
$filename = str_replace("+", "%20", $filename);// 替换空格
$attachment = "attachment; filename=\"{$filename}\"; charset={$charset}";
} else if (preg_match("/Firefox/", $_SERVER["HTTP_USER_AGENT"])) {
$attachment = 'attachment; filename*=utf-8\'\'' . $filename;
} else if (preg_match("/(Safari)|(iphone)|(ipad)/i", $_SERVER["HTTP_USER_AGENT"])) {
$filename = rawurlencode($filename); // 注意:rawurlencode与urlencode的区别
$attachment = 'attachment; filename*=utf-8\'\'' . $filename;
} else {
$attachment = "attachment; filename=\"{$filename}\"; charset={$charset}";
}
return $attachment;
}
header('Pragma: public');
header('Expires: 0');
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Content-Type:application/force-download');
header("Content-Type:application/vnd.ms-excel");
header('Content-Type:application/octet-stream');
header('Content-Type:application/download');
header("Content-Disposition:" . downloadHeaders("测试.xlsx"));
header('Content-Transfer-Encoding:binary');
推荐文章: