随笔 - 8  文章 - 413  评论 - 9  阅读 - 34万

php函数: urlencode

urlencode可以解决下载文件名中文乱码问题, 但有时如果文件名含有空格字符, urlencode编码后的字符串会出现加号,

故需要将空格去掉!而有一种方法可以不把空格去掉,需要在输出文件名时把+替换成%20,即可以得到正常的文件名了!

$file = "例  子   example 1.rar";
$realname = "例  子   example 1.rar";
$realname = str_replace(" ","",$realname);   //去掉英文空格 
$str=str_replace(chr(32),"",$str);  //去掉中文空格
$str=str_replace(chr(161),"",$str);  //去掉中文空格
$realname = str_replace(chr(227),"",$realname);   //去掉utf-8空格

 

或者用正则表达式来完成空格的替换:
$realname = preg_replace("/[[:space:]]/","",$realname);
$realname = ereg_replace("[[:space:]]","",$realname);

 

$fp=fopen($file,"r"); 
header("content-type: application/octet-stream");  
header("accept-ranges: bytes");
header("content-length: ".filesize("$file_path"));
header("content-disposition: attachment;"."filename= ".urlencode($realname));    //url编码文件名,正确显示中文名称
header("content-disposition: attachment;"."filename= ".str_replace("+","%20",urlencode($realname)));   //替换加号
echo fread($fp,filesize("$file_path"));    //读取文件
fclose($fp);
exit;

posted on   DavidYanXW  阅读(470)  评论(0编辑  收藏  举报
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示