PHP 文件下载无法识别 Chrome 和 Edge 中的文件类型

PHP file download not recognizing file type in Chrome and Edge

我正在尝试创建一个简单的下载页面,该页面目前可以在 Firefox 中使用,但不能完全在 Chrome 和 Edge 中使用。要下载的文件是 mp3,位于服务器上的私有目录中。

当我在 Firefox 中下载文件时,它按预期工作。如果我使用 Chrome 或 Edge 下载它,文件仍会下载,但它无法识别 文件类型 ,只是将其保存为无扩展名文件。
如果我手动将 .mp3 扩展名添加到下载的文件中,就可以播放曲目。

(POST 请求从 index.php 发送到 download.php)
------------------
在 download.php 中,我设置了以下 HTTP headers 并读取文件:

header("Cache-Control: private"); 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$title\"");
header("Content-Length: ".filesize($location)); 

//Force download
readfile($location);
exit();

把'Content-type'改成'audio/mpeg'也不行。

我阅读的大多数关于使用 PHP 强制下载文件的文章相互矛盾(尤其是关于 HTTP headers),我找不到专门针对我的情况的答案。

如果问题不在headers,我也可以提供完整代码?谢谢。

你能试试吗:

header("Content-Disposition: attachment; filename=\"$title\".mp3");

查看标题是否不含后缀