Codeigniter force_download()不适用于PDF扩展名

时间:2018-07-16 12:11:37

标签: php codeigniter

我面临两个问题。

  1. force_download()不适用于pdf扩展名。

当我尝试下载txt扩展名文件时,功能正常运行 下面的代码。

public function index()
    {
        $data = "some text";
        $name = "sample.txt";
        force_download($name,$data);
    }

但是当我尝试使用pdf扩展名进行操作时,文件会正确下载,但是当我单击下载的pdf文件时,它会显示错误:无法加载PDF文档。

public function index()
        {
            $data = "some text for pdf";
            $name = "sample.pdf";
            force_download($name,$data);
        }
  1. 第二种方法是在下载文件之前先询问或显示对话框,而不是强制下载。

2 个答案:

答案 0 :(得分:3)

您不能使用force_download()创建一个(不中断的)pdf文件。您需要使用fpdf之类的php库或类似的库来创建pdf文件。 force_download()函数仅生成标题,从而强制进行下载。

如果服务器上存在pdf文件,则可以force_download('/path/to/my_pdf.pdf', NULL);

关于您问题的第二部分,它太宽泛了,有成千上万种创建对话框的方法

答案 1 :(得分:0)

您要下载的文件的通行名

控制器

function download($file_name)
{
    $this->load->helper('download');
    force_download('./assets/'.$file_name, NULL);
}

查看

<a href="<?php echo SURL.'controller_name/download/'.$file_name;?>">Download
</a>

对于第二个问题,请尝试 onclick()