2014-10-10 88 views
0

CodeIgniter似乎有很多解决方案来强制下载文件,但我无法找到任何用于输出文件而不强制下载的文件。如何在不强制下载的情况下从CodeIgniter输出文件?

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

推测,这主要是输出正确的标题,尽管我不知道不同的文件类型是否需要不同的标题。有没有人有一个例子?

+0

'所有文件应该能够在browser'被打开。但是哪种格式的pdf/excel/doc? – 2014-10-10 05:03:35

回答

2

您只需指定好的MIME类型并省略content-disposition =附件。

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

例如:

$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; 
} 
+1

我发现了一些事情:不要将内容类型放在引号中,但是如果指定了文件名,那么* do *将其放在引号中,或者文件名中的逗号会导致重复的标题错误。默认文件名,如果下载被触发,可以这样指定: header('Content-Disposition:inline; filename =“July Report.pdf”'); – 2014-10-13 01:10:33

相关问题