2012-02-04 56 views
0

我在webroot之外保存了很多文檔。PHP在webroot之外下載文件

我想點擊一個鏈接,打開一個新窗口(target =「_ blank」),然後強制下載找到的文件。

這裏就是我這麼遠,但我的研究結果表明狼吞虎嚥-DE-對韓國人在瀏覽器中彈出,而不是強迫下載到桌面:

function download($filelocation){ 

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

} 

在新的瀏覽器窗口,我只是使用該文件的特定路徑調用download()函數。

這絕對是找到這個文件,但現在我只是想知道我用header()強制通過瀏覽器強制文件。

+0

你試過哪些瀏覽器? – Grilse 2012-02-04 23:10:42

+1

Ehm http://stackoverflow.com/questions/6724257/php-header-attach-avi-file – Vyktor 2012-02-04 23:12:31

+0

你必須告訴瀏覽器什麼是文件應用程序類型,以便它可以調用適當的處理程序。例如,它是一個.jpg圖片還是一個.doc文件? ......就像Vyktor說的那樣...... – dar7yl 2012-02-04 23:13:09

回答

1

缺少此:

header("Content-Type: application/force-download"); 
+0

試過了,得到了同樣的結果。我甚至改變了內容類型以反映實際的文件類型。 – coffeemonitor 2012-02-04 23:31:09