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;
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步