Php:从服务器下载时保留相同的文件名

我正在通过php脚本下载一个文件,除了一个丑陋的事实,一切都很完美。 下载的文件保持相同的URL并附有原始名称。 文件下载时如何保持相同的文件名?

http://bachday.com/index.php?page=custom&file=mmailer/download.php?mfile=sample.docx
if (isset($_GET['mfile'])) {
    $file = $_SERVER['DOCUMENT_ROOT'].'/oc-content/plugins/mmailer/pfile/'.$_GET['mfile'];

    if (file_exists($file) && is_readable($file) && preg_match('/.docx$/',$file)) {
        header('Content-Type: application/docx');
    header("Content-Disposition: attachment; filename="$file"");
    readfile($file);
    /*
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    echo (readfile($file));*/


    }
    else
    {
        header("HTTP/1.0 404 Not Found");
        echo "Error 404: File Not Found: 
$file"; }

header('Content-Disposition: attachment; filename="name_of_file_here"')会做伎俩。 您将文件的完整路径作为header("Content-Disposition: attachment; filename="$file""); 因为你的$文件包含完整路径。 相反,只需发送文件的名称即可。


header('Content-Disposition: attachment; filename='.basename($file));

这条线可以解决这个问题。


if (isset($_GET['mfile'])) {
    $file = $_SERVER['DOCUMENT_ROOT'].'/oc-content/plugins/mmailer/pfile/'.$_GET['mfile'];

    if (file_exists($file) && is_readable($file) && preg_match('/.docx$/',$file)) {
        header('Content-Type: application/docx');
    header("Content-Disposition: attachment; filename="".basename($file).""");//use basename to extract filename from full file path
    readfile($file);
    /*
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    echo (readfile($file));*/


    }
    else
    {
        header("HTTP/1.0 404 Not Found");
        echo "Error 404: File Not Found: 
$file";
    }
链接地址: http://www.djcxy.com/p/46673.html

上一篇: Php: Keep same filename when downloading from server

下一篇: Use SwiftyJSON to deserialize NSDate