您的位置:首页 > 编程语言 > PHP开发

解决Content-Disposition: 下载中文名乱码,下载乱码

2013-03-19 17:50 274 查看
header('Content-Disposition: attachment; filename*="'. $FileNname . '"');浏览器的不同导致PHP下载中文名乱码。

解决办法如下:

经测试,目前以兼容各主流浏览器。

$lb_sourcefile_name=$_GET['sourcefile'];
$down_url=$_GET['operate'];
if($_GET['mykey']){
$mykey=$_GET['mykey'];
$mykey=str_replace("_","+",$mykey);
$mykey=base64_decode($mykey);
if($mykey === '2013abcdefg2013lubansoft9527'){
$lb_sourcefile_name=str_replace("_","+",$lb_sourcefile_name);
$lb_sourcefile_name=base64_decode($lb_sourcefile_name);
$down_url=str_replace("_","+",$down_url);
$down_url=base64_decode($down_url);
$down_url='../lb/rename_file/'.$down_url;
$ua = $_SERVER["HTTP_USER_AGENT"];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
if (preg_match("/MSIE/", $ua)) {
$lb_sourcefile_name = urlencode($lb_sourcefile_name);
$lb_sourcefile_name = str_replace("+", "%20", $lb_sourcefile_name);
header('Content-Disposition: attachment; filename="' . $lb_sourcefile_name . '"');
}
elseif (preg_match("/Firefox/", $ua)) {
header('Content-Disposition: attachment; filename*="utf8\'\'' . $lb_sourcefile_name . '"');
}
else {
header('Content-Disposition: attachment; filename="' . $lb_sourcefile_name . '"');
}
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($down_url));
ob_clean();
flush();
readfile($down_url);
exit;
}
else{
die(404);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐