强制浏览器下载文件而不是打开

时间:2013-04-20 19:04:36

标签: php download

我使用典型的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);

一切正常 - 下载/另存为对话框打开,除了尝试在docs.google.com中打开的.doc文件,但由于缺少权限而失败 - 这是因为我正在从外部提供文件网站根。

那么,无论文件mime类型如何,我如何绕过docs.google并强制每个浏览器提供另存为对话框? ('doc' => 'application/msword')

我尝试了以下内容无济于事:

    .htaccess文件中的
  1. <FilesMatch "\.(?i:doc)$">
        ForceType application/octet-stream
        Header set Content-Disposition attachment
    </FilesMatch>
    
  2. .htaccess文件中的
  3. AddType application/octet-stream .doc
    
  4. PHP脚本中的
  5. header('Content-Type: application/force-download');
    

2 个答案:

答案 0 :(得分:1)

将此添加到标题中:

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

答案 1 :(得分: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);

P.S。 - 我只在$file变量中使用了文件扩展名,因此无需提及 mime type ...

希望这会有所帮助:)