[英]Filename with # in the name fails to download
背景
我有一个在 CentOS 服务器上运行的 PHP 应用程序。 前端使用 ajax 调用来调用 PHP 脚本。 该脚本从服务器返回一个文件并将其下载到客户端。
问题
如果文件名称中带有#
,则文件下载失败。
例子
File#Name.pdf
= 下载不正确
FileName.pdf
= 下载是否正确
这是用于检索文件的 PHP,
if( isset($_GET['path'])) {
$path = $_GET['path'];
if(!file_exists($path)) {
die('file not found');
} else {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$path);
header('Content-Length: '.filesize($path));
readfile($path);
ob_clean();
flush();
exit;
}
}
题
为什么名称中带有#
时文件无法下载?
啊,文件名是否来自 GET 请求? 如果是这样,# 可能会被重写为 %23。 尝试
$path = urldecode($_GET['path']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.