PHP在webroot之外下载文件

时间:2012-02-04 23:06:09

标签: php header download

我在webroot之外保存了很多文档。

我想点击一个链接,打开一个新窗口(target =“_ blank”),然后强制下载找到的文件。

这是我到目前为止所得到的,但我的结果显示了浏览器弹出窗口中的gobble-de-gook,而不是强制下载到桌面:

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()中缺少什么来强制文件通过浏览器。

1 个答案:

答案 0 :(得分:1)

错过了这个:

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