2014-10-10 92 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

相關問題