无法从codeigniter中的服务器下载pdf文件

时间:2018-01-19 11:54:50

标签: codeigniter file pdf download

我在控制器中使用以下代码下载pdf文件,这些文件存储在codeigniter中应用程序文件夹内的文件夹中。 在视图页面中,我有一个按钮,单击它后,它会重定向到该控制器,然后下载该文件。它下载空白页(pdf)。 期待任何建议。

 $filePath = APPPATH.'invoice/'."Let's Sunday#".$this->uri->segment(4).".pdf";
        if(!empty($filePath) && file_exists($filePath)){ 
        header("Content-Type: application/octet-stream");
        header("Content-Disposition: attachment; filename=" .$filePath); 
        header("Content-Type: application/octet-stream");
        header("Content-Type: application/download");
        header("Content-Description: File Transfer");            
        header("Content-Length: " . filesize($filePath));
        flush(); 
        $fp = fopen($filePath, "r");
        while (!feof($fp))
        {
            echo fread($fp, 65536);
            flush(); 
        } 
        fclose($fp); }else{echo "file does not exist";}

2 个答案:

答案 0 :(得分:1)

仅将columnData中的名称更改为文件名而不是完整路径

答案 1 :(得分:0)

以下是CodeIgniter应用程序中的下载部分:

if (file_exists($filePath)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($filePath).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filePath));
    readfile($filePath);
    flush(); 
    exit;
}

不同之处在于标题的排序(可能无关紧要),包含expires和pragma标头,以及Content-Disposition使用完整的基本名称。

该PDF文件名的命名约定可能会导致问题......还有其他问题需要测试。