使用PHP和WordPress将zip文件下载到本地驱动器

使用PHP和WordPress将zip文件下载到本地驱动器,php,wordpress,download,Php,Wordpress,Download,我正在为一个网站使用WordPress,并希望包含一个菜单项,以便将zip文件从网站下载到本地驱动器。我尝试使用以下功能: function download_binary_file($file) { if (file_exists($file)) { $base_name = basename($file); header('Content-Description: File Transfer'); header('Content-Typ

我正在为一个网站使用WordPress,并希望包含一个菜单项,以便将zip文件从网站下载到本地驱动器。我尝试使用以下功能:

function download_binary_file($file) {
    if (file_exists($file)) {
        $base_name = basename($file);
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.$base_name.'"');
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
}

但当执行此功能时,zip文件的内容将显示在我的浏览器中,而不是获取保存文件的对话框。有什么想法吗?

上传zip文件,然后创建菜单项,然后将htaccess重定向从菜单项添加到zip文件url。Zip文件通常自动下载。。我知道wordpress也有下载管理器插件,这使得下载过程非常简单。

以什么方式显示?如果删除
ob_clean(),会发生什么
ob_flush()
?您确定在header()之前没有输出吗?+您尝试过其他浏览器吗?主要是非ASCII字符。基本上,文件被转储到浏览器窗口中。对John来说:它不起作用,它说头已经被发送了,这是使用WordPress的一个副作用。删除ob内容,但将所有这些都打包到init钩子中<代码>添加操作('init',函数(){//Your code})-我不知道您的代码是否有效,但现在您将无法获得标题已发送的问题。htaccess重定向?不,这并不复杂,我可以简单地提供一个包含zip文件名的链接,但这不是我的问题