我有一个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);
答案 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
。