如何在不强制下载的情况下从CodeIgniter输出文件?

时间:2014-10-10 04:15:02

标签: codeigniter header download

似乎有很多解决方案可供CodeIgniter强制下载文件,但我找不到任何输出文件而不强制下载。

在我的情况下,我通过控制器重定向我的文件下载(最初Apache直接处理它们)以记录统计信息。我在下载助手中使用了CodeIgniter force_download函数。但是,我现在有一个请求,应该能够在浏览器中打开一些或所有文件,这样就不会强制保存到文件中,所以我想知道如何操作。

据推测,这主要是输出正确的标题,但我不知道不同的文件类型是否需要不同的标题。有人有例子吗?

1 个答案:

答案 0 :(得分:5)

您只需指定好的mime类型并省略Content-Disposition: attachment

因此,如果浏览器可以渲染它,它将被显示。如果不能,则会下载。

示例:

$file = 'images/smileys/panda.gif';

if (file_exists($file)) 
{
    $finfo  = new finfo(FILEINFO_MIME);

    header('Content-Description: File Transfer');
    header('Content-Type: '.$finfo->file($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}