如何通过PHP呈现一个.mp3文件URL在浏览器中播放_GET



通常情况下,如果我在地址栏中输入一个媒体文件(例如。mp3文件)的URL, Chrome和Firefox将显示一个简单的播放器。

http://example.com/audio/myfile-1.mp3通常会导致一个黑暗的页面,中间有一个简单的网络播放器,有一个播放按钮,我可以在浏览器中收听音频文件。

…浏览器没有让我下载

然而,当我的PHP处理_GET参数时,以不同的名称交付该文件,它要求下载。

<标题>

我的情况:实际文件位于:

www/html/example.com/audio/myfile-1.mp3

没有问题这个URL呈现一个web播放器,正确的,没有下载请求:

http://example.com/audio/myfile-1.mp3

问题(浏览器要求下载文件)

|浏览器地址:(不是实际文件)

http://example.com/aud-1.mp3

|. htaccess: require mod创建_GET

RewriteRule ^aud-([a-zA-Z0-9]+).mp3$ /audio.php?a=$1 [L]

…到目前为止,一切都很顺利……

|audio.php:

$id = $_GET[a];
$file = "www/html/example.com/audio/myfile-$id.mp3";
if (file_exists($file)) {
header('Content-Description: File Transfer');
header("Content-Transfer-Encoding: binary");
header('Content-Type: audio/mpeg');
header('Content-Disposition: attachment; filename="aud-'.$id.'.mp3"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: '.filesize($file));
readfile($file);
exit;
}

…然后浏览器请求下载该文件,但不呈现音频文件以在浏览器中播放。这个文件是正确的,可以正确播放,并且可以在带有<audio>标记的HTML中播放。因此,.htaccess或_GET进程没有问题。

我想我的headers之一一定是错的。为什么浏览器要求下载而不是播放?如何使音频文件URL在浏览器中像其他音频文件一样播放?

在输入这整个问题后,我想删除header('Content-Disposition: ...)语句,这解决了它。这是使它在浏览器中下载而不是播放的部分。

有更好的解决方案吗?有更好的方法吗?