方法一: 输出文件流形式
$filename = basename($file);
$filenameArr = explode('.',$filename);
$filename = current($filenameArr).'_'.date('YmdHis').'.'.end($filenameArr);
header("Content-type: application/octet-stream");
//处理中文文件名
$ua = $_SERVER["HTTP_USER_AGENT"];
if (preg_match("/MSIE/", $ua)) {
$encoded_filename = rawurlencode($filename);
header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
} else if (preg_match("/Firefox/", $ua)) {
header("Content-Disposition: attachment; filename*=\"utf8''" . $filename . '"');
} else {
header('Content-Disposition: attachment; filename="' . $filename . '"');
}
header("Content-Length: ". filesize($file));
readfile($file);
这段代码展示了如何在PHP中实现文件流下载,并处理中文文件名的问题。通过检查浏览器User-Agent,适配不同浏览器的filename编码方式,确保正确显示文件名。同时,它设置了Content-Type、Content-Disposition和Content-Length头部,读取并发送文件内容。
488

被折叠的 条评论
为什么被折叠?



