Php 下载的文件具有错误的mime类型

Php 下载的文件具有错误的mime类型,php,http-headers,zip,download,mime-types,Php,Http Headers,Zip,Download,Mime Types,我有一个PHP脚本,它创建了一个Zip存档,然后将其传递到浏览器进行下载 这可以通过HTTP响应头轻松完成 header('Pragma: no-cache'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0, public') header('Content-Type: application/zip') header('Content-Length: ' . fi

我有一个PHP脚本,它创建了一个Zip存档,然后将其传递到浏览器进行下载

这可以通过HTTP响应头轻松完成

header('Pragma: no-cache');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0, public')
header('Content-Type: application/zip')
header('Content-Length: ' . filesize($zipPath))
header('Content-Disposition: attachment; filename=filename.zip')
header('Content-Transfer-Encoding: binary')

echo file_get_contents($zipPath);
文件已正确下载。我也可以打开它。然而,当我检查下载的文件mime类型时,它告诉我:application/octet stream而不是application/zip

对于文件mime类型检测,我使用以下代码段:

$pathToDownloadedFile = 'somewhere-on-disk';
$file = finfo_open(FILEINFO_MIME_TYPE);
var_dump(
    file_exists($pathToDownloadedFile), 
    finfo_file($file, $pathToDownloadedFile)
);
其中包括:

真的 应用程序/八位字节流

我用谷歌搜索了这个问题,但运气不好。
非常感谢您提供的任何帮助。

如何检查下载文件的mime类型?@CodeCaster with fileinfo PHP extensionI意思是请编辑您的问题,以显示用于检查下载文件mime类型的代码。因此,问题不在您的HTTP头中,而在finfo_文件中。磁盘上的文件不存储mime类型,它是根据文件和文件扩展名中的前几个字节的幻数推断出来的。当你在网上搜索时,你会发现你需要验证你的魔法文件安装。mime_content_type告诉您有关该文件的信息是什么?@CodeCaster它还返回应用程序/八位字节流。