首页 > 解决方案 > php无法在浏览器中查看下载的PDF文件

问题描述

我有一个下载媒体功能,可以下载所有类型的媒体文件。下面是代码

public function downloadMedia($file, $filename_direct = '', $extern = '', $exitHere = 1)
    {
        jimport('joomla.filesystem.file');

        clearstatcache();

        if (!$extern)
        {
            if (!JFile::exists($file))
            {
                return 2;
            }
            else
            {
                $len = filesize($file);
            }
        }
        else
        {
            /* Return the size of a remote url or a local file specified by $url.
                $thereturn specifies the unit returned (either bytes "", MiB "mb" or KiB
                "kb"). */
            $len = filesize($file);
        }

        $filename       = basename($file);

        $file_extension = strtolower(substr(strrchr($filename, "."), 1));
        $ctype = $this->getMime($file_extension);

        ob_end_clean();

        //  Needed for MS IE - otherwise content disposition is not used?
        if (ini_get('zlib.output_compression'))
        {
            ini_set('zlib.output_compression', 'Off');
        }

        header("Cache-Control: public, must-revalidate");
        header('Cache-Control: pre-check=0, post-check=0, max-age=0');
        header("Expires: 0");
        header("Content-Description: File Transfer");
        header("Content-Type: " . $ctype);
        header("Content-Length: " . (string) $len);
        header('Content-Disposition: attachment; filename="' . $filename . '"');

        //  set_time_limit doesn't work in safe mode
        if (!ini_get('safe_mode'))
        {
            @set_time_limit(0);
        }

        /*@readfile($file);

        if ($exitHere == 1)
        {
            exit;
        }*/

        $fp = fopen($file, "r") ;

        ob_clean();
        flush();
        while (!@feof($fp)) {
            $buff = @fread($fp, $len);
            print $buff;
        }

        exit;
    }

现在的问题是,每当我下载 PDF 文件并单击下载的文件时,它都会在浏览器中显示错误,例如“无法加载 PDF 文档”。

错误图像

只有当我在 adobe 中打开文件而不是在浏览器中打开它时,下载的 PDF 文件才能正确打开。

标签: phpjoomla

解决方案


推荐阅读