php如何解决苹果浏览器Safari下载附件文件名乱码的问题

飘逸的风2年前 (2023-06-08)随笔834

一种解决方法是通过设置HTTP响应头中的Content-Disposition属性来指定附件文件名。具体步骤如下:


1. 在后端PHP代码中,获取附件的文件名(假设为$file_name)和文件路径(假设为$file_path)。


2. 使用下面的代码生成HTTP响应头中的Content-Disposition属性:

$ua = $_SERVER["HTTP_USER_AGENT"];
if(preg_match("/Safari/", $ua)) {
	header('Content-Disposition: attachment; filename="' . $file_name . '"; filename*=utf-8\'\'' . rawurlencode($file_name));
} else {
	header ( "Content-disposition: attachment; filename=\"" . $filename . "\"" );
}


其中,filename*=utf-8''后面的部分是通过URL编码来处理文件名中的特殊字符,如空格、中文等。


3. 将附件内容输出到HTTP响应中:


readfile($file_path);


4. 在Safari浏览器中下载附件时,应该可以正确显示文件名了。


发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。