使用PHP服务器配置强制下载?

使用PHP服务器配置强制下载?,php,types,download,Php,Types,Download,我已经找了很多了,但没有一件对我有用。问题是文件显示在浏览器中。它包含JSON,但是一个.locx文件(应用程序需要)。不,不是我的应用程序,所以我无法更改。我已经测试了太多内容类型和编码的变化,但没有任何帮助。这是我的密码 <?php function DownloadFile($file) { if(file_exists($file)) { header('Content-Description: File Transfer');

我已经找了很多了,但没有一件对我有用。问题是文件显示在浏览器中。它包含JSON,但是一个.locx文件(应用程序需要)。不,不是我的应用程序,所以我无法更改。我已经测试了太多内容类型和编码的变化,但没有任何帮助。这是我的密码

<?php
    function DownloadFile($file) {
        if(file_exists($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));
            ob_clean();
            flush();
            readfile($file);
            exit;
        }

    }

    DownloadFile('storage/3-3-2.locx');
?>

谢谢你的阅读

//更新


它可以在另一台服务器上运行,正如注释中所述,脚本运行得非常好,但我必须更改服务器配置,使其也可以运行吗?

上传文件时会发生这种情况


上传文件时,编码从utf8更改为iso。

您的代码在Chrome和Firefox中都适用于我您使用的浏览器是哪种?例如,我发现Internet Explorer缓存了内容类型头,您必须重新启动它才能以不同的方式处理内容。我建议您可能需要查看一下您的服务器配置和MIME类型…@Kkinsey我必须更改我的服务器配置,以确保其正常工作?对不起;我不太清楚;在我的Apache(2.4)中,etc/apache24/mime.types和etc/apache24/magic中都没有列出“locx”,所以我不确定您的服务器和我的测试之间可能有什么不同。我还想知道您的ob_clean()和flush()调用。flush()的手册中提到了几个注意事项和quid-pro-quo,可能会让您有理由检查这些调用是否与问题有关(您是否也需要ob_flush(),您是否通过Win32提供服务,Apache中是否启用了mod_gzip,&c)。。。。