面对在PHP中下载脚本的问题

时间:2013-06-18 08:47:04

标签: php header download

我遇到下载脚本的问题,每当我的项目网站上的下载开始时,网站中的所有链接都根本不起作用。 文件完全下载后,链接开始工作。

我正在设置header并使用readfile php方法下载文件。我希望该文件下载应与用户在网站上的操作同时工作。 我正在使用以下代码

    header("Pragma: public");
    header("Expires: 0");
    header("Content-Type: application/$ctype");
    header("Content-Description: File Transfer");
    header("Content-Disposition: inline; filename=$docName");
    header('Content-Length: '. filesize($filename));
    header("Accept Ranges: bytes"); 
    header("Content-Transfer-Encoding: binary");        
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");            
    readfile("$filename");

此处filename是文件名,ctype是文件类型。

如何解决这个问题?

如果有人有解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

我只是猜测您错过了正确的标题,更改内容类型并根据需要转移编码

$ download是实际文件,即/var/www/download_images/1.jpg

$ filesize是文件的大小

$ filename可以是您想要呈现给用户的任何文件名,即homer_simpson.jpg

<?php
    if (file_exists($download))
    {
        header("Cache-Control: must-revalidate");
        header("Expires: 0");
        header("Pragma: public");
        header("Content-Description: File Transfer");
        header("Content-Length: ". $filesize .";");
        header("Content-Disposition: attachment; filename=" . $filename);
        header("Content-Type: application/octet-stream; ");
        header("Content-Transfer-Encoding: binary");
        ob_clean();
        flush();

        readfile($download);
    }
?>