强制下载停止工作

时间:2010-07-18 12:56:13

标签: php download http-headers

我有一个PHP脚本,我已经使用多年来强制从我的网站下载。但在过去一个月左右的某个时候,它停止工作并触发文件未找到错误。奇怪的是,在firefox中,如果我在错误页面上查看源代码,那就是我试图下载的文件。并做文件>从那里保存给你正确的文件。所以我知道脚本没有在服务器上找到文件也没问题。

我是如何设置标题的?

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); 
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-length: '.filesize($file_url));
header('Content-disposition: attachment; filename="'.basename($file_url).'"');
readfile($file_url);

2 个答案:

答案 0 :(得分:1)

你能试试这个功能吗?

function force_download($file){
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    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($file));
    readfile($file);
    exit;   
}

答案 1 :(得分:0)

我最后为了做这件事而作弊。

header("Location: $file_url"); //file_url is now the real url, not the path

然后使用cPanel确保我使用的所有MIME类型都设置为application/octet-stream