Php pdf下载文件名问题

Php pdf下载文件名问题,php,pdf,file-io,Php,Pdf,File Io,我正在使用以下代码进行安全的pdf下载。一切正常。问题是下载的pdf文件名concats文件夹名也是如此。我想取消显示文件夹名称。还可以为安全的pdf下载提供更好的解决方案。请检查以下内容 $pdf_file = base64_decode($_GET['file_name']); $dir="Secured_files"; $file = $dir."/".$pdf_file .".pdf"; header("Content-Disposition: attac

我正在使用以下代码进行安全的pdf下载。一切正常。问题是下载的pdf文件名concats文件夹名也是如此。我想取消显示文件夹名称。还可以为安全的pdf下载提供更好的解决方案。请检查以下内容

    $pdf_file = base64_decode($_GET['file_name']);
    $dir="Secured_files";
    $file = $dir."/".$pdf_file .".pdf";
    header("Content-Disposition: attachment; filename=" . urlencode($file));   
    header("Content-Type: application/octet-stream");

    header("Content-Type: application/download");
    header("Content-Description: File Transfer");            
    header("Content-Length: " . filesize($file));
    flush(); // this doesn't really matter.
    $fp = fopen($file, "r");
    while (!feof($fp))
    {
        echo fread($fp, 65536);
        flush(); // this is essential for large downloads
    } 
    fclose($fp);
文件名是:此处
Secured\u files
是文件夹名,
xxxxx
是文件名

安全文件xxxxx.pdf

替换

header("Content-Disposition: attachment; filename=" . urlencode($file)); 

$file
是完整的文件路径,而不是名称。你只需要名字


如果这仍然不起作用,请执行
var\u dump($file)
并发布结果。

urlencode仅此->$pdf_file@Goikiu谢谢你的回复,但我没听清楚你在说什么..你在哪里->filename=“.urlencode($file)试试这个->filename=“。urlencode($pdf_file),这将更改下载文件的名称,但不包括路径。U r correct。但是,从url我得到的只是文件名。在只获得文件名后,我手动连接文件夹名。嗯。。。如果您想显示xxxxx.pdf(例如您的示例),可以尝试离开urlencode。这两种解决方案都不起作用。对于第一个,下载时文件名没有扩展名。不管怎样,这个答案是有效的。谢谢您的回复。啊,是的,当然扩展名丢失了,因为您对包含扩展名的完整变量进行了编码。我错过了:有没有可能重命名文件以隐藏原始文件名?这只是为了安全,不是强制性的。
$file_label = $pdf_file .".pdf";
$file = $dir."/".$file_label;
header("Content-Disposition: attachment; filename=" . urlencode($file_label));
$file_label = $pdf_file .".pdf";
$file = $dir."/".$file_label;
header("Content-Disposition: attachment; filename=" . urlencode($file_label));