我已经有一个PHP代码,以强制用户下载文件, 代码运作良好
问题是,当用户想要下载文件名中包含分号的文件时
例如,如果文件名为XYZ.zip
,代码将成功 如果文件名为aaaX; Y.zip(读为 aaax [分号] Y [dot] zip), 将不会成功 用户下载时,文件名变为aaaX它是在第一个分号中删除的
<?php
$a=basename($_GET['fn']);
$sizepath =filesize(base64_decode($_GET['path']));
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=".$a);
header('Cache-control: private, must-revalidate');
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile(base64_decode($_GET['path']));
?>
答案 0 :(得分:4)
使用urlencode()
,如下所示:
header("Content-Disposition: attachment; filename*=us-ascii'en-us'".urlencode($a));
有关详细信息,请参阅RFC 2231。
答案 1 :(得分:2)
试试这个
header("Content-Disposition: attachment; filename=\"" . $a . "\"" );