繁体   English   中英

名称中带有 # 的文件名无法下载

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM