PHP文件下载 浏览器显示文件名乱码问题
添加评论
2009年9月29日
<?php $filename = "下载文件名"; $filesize = filesize('文件地址'); //获得文件大小 header('Pragma: public'); header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: pre-check=0, post-check=0, max-age=0'); header('Content-Transfer-Encoding: binary'); header('Content-Encoding: none'); header('Content-type: application/force-download'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Content-length: '.$filesize); ?>
这样在弹出文件下载框时,显示的文件名在不同的浏览器下面是不一样的。有的是乱码,有的是空白。
所以文件名统一使用utf-8编码,然后针对ie浏览器进行一次rawurlencode编码。
把以下代码放在header之前
if (preg_match(’/MSIE/’,$_SERVER['HTTP_USER_AGENT'])) { $filename = rawurlencode($filename); }
多谢了,网上找了个遍,还是这个方法最简单。非常优美的解决了我的问题。