隐藏下载文件位置。 - 重定向下载

时间:2011-07-11 07:49:05

标签: php redirect download

我正在销售数码产品,并希望隐藏下载的真实位置。

所以我正在使用这样的重定向脚本:

protected function redirectDownload ($realfilename) { 
    ob_start(); 
    $mm_type="application/octet-stream"; 

    header("Cache-Control: public, must-revalidate"); 
    header("Pragma: no-cache"); 
    header("Content-Type: " . $mm_type); 
    header("Content-Length: " .(string)(filesize($realfilename)) ); 
    header('Content-Disposition: attachment; filename="'.$this->fakefilename.'"'); 
    header("Content-Transfer-Encoding: binary\n"); 

    ob_end_clean(); 
    readfile($realfilename); 
}  

我下载时,zip文件总是被破坏,但是当我直接下载它时,它很好。

有谁知道为什么会这样?

我认为这在另一台服务器上工作正常,但需要确认一下。

如果我无法解决这个问题,我可以使用其他任何技术或服务来做到这一点吗?

1 个答案:

答案 0 :(得分:2)

在文本编辑器中打开已下载(已损坏)的文件,我猜在调用该函数之前已经有一些输出。
你最好在脚本的开头使用ob_start()而不是函数的开头。