2013-04-20 204 views
2

我使用的是典型的PHP代碼下載文件:強制瀏覽器下載文件,而不是打開

header('Content-Type: ' . $mimeTypes[$fileext]); 
    header('Content-Disposition: attachment; filename="' . $filename . '"'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Accept-Ranges: bytes'); 
    header('Cache-Control: private'); 
    header('Pragma: private'); 

    readfile($filepath); 

一切正常 - 下載/另存爲對話框打開,除非它試圖.doc文件在docs.google.com中打開,但由於缺少權限而失敗 - 這是因爲我正在從網站根外部提供文件。

那麼,如何繞過docs.google並強制瀏覽器提供保存爲對話框,而不管文件MIME類型? ('doc' => 'application/msword')

我嘗試以下無濟於事:在.htaccess文件

  1. :在.htaccess文件

    <FilesMatch "\.(?i:doc)$"> 
        ForceType application/octet-stream 
        Header set Content-Disposition attachment 
    </FilesMatch> 
    
  2. AddType application/octet-stream .doc 
    
  3. 在PHP腳本

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

您是否嘗試過使用[HTML5](HTTP://更新。 html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download)? – kero 2013-04-20 19:34:28

回答

1

添加到您的標題:

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

我目前無法測試它,但確實有效嗎? oO – xsign 2013-04-20 20:12:11

+2

爲什麼我會發布它? :) – 2013-04-20 20:15:34

+0

非常感謝分享這些信息!我會明智地使用它:-) – xsign 2013-04-20 20:20:14

0

下面的PHP爲我工作

header("Cache-Control: private"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=".$file.""); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: binary/octet-stream"); 
readfile ($link); 

附: - 我以前只在$file變量的文件擴展名,所以沒有必要提及MIME類型 ...

希望這有助於:)

相關問題