[英]How to render an .mp3 file URL to play in the browser through PHP & _GET
通常,如果我在地址栏中输入一个 URL 到一个媒体文件(例如 .mp3 文件),Chrome 和 Firefox 将显示一个简单的播放器。
http://example.com/audio/myfile-1.mp3
通常会导致一个黑色页面,中间有一个简单的 web 播放器,带有播放按钮,我可以在浏览器中收听音频文件。
...浏览器不要求我下载它。
但是,当我的 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 :要求 mod 创建一个_GET
RewriteRule ^aud-([a-zA-Z0-9]+)\.mp3$ /audio.php?a=$1 [L]
...到目前为止一切正常...
| 音频.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;
}
...然后浏览器请求下载文件,但不渲染要在浏览器内播放的音频文件。 这个文件是正确的,可以正常播放,可以在HTML里面用<audio>
标签播放。 所以,.htaccess或者_GET
过程都没有问题。
我想我的headers
之一一定是错误的。 为什么浏览器要求下载而不是播放? 如何使音频文件 URL 像其他音频文件一样在浏览器中播放?
在输入了整个问题之后,我想删除header('Content-Disposition: ...)
语句,然后就解决了。 这是让它在浏览器中下载而不是播放的部分。
有更好的解决方案吗? 有什么办法可以做得更好吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.