繁体   English   中英

如何通过 PHP & _GET 渲染 an.mp3 文件 URL 在浏览器中播放

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM