通过PHP在嵌入式播放器中使用动态mp3数据不起作用

通过PHP在嵌入式播放器中使用动态mp3数据不起作用,php,javascript,http-headers,mp3,binary-data,Php,Javascript,Http Headers,Mp3,Binary Data,我有一个嵌入式mp3播放器,我正在网页上运行。当我加载一个物理mp3的路径作为文件url时,它工作得很好,但是当我尝试从php端点加载mp3二进制数据时,它失败了 下面是我通过php输出mp3数据的步骤: //Begin writing headers header( 'Pragma: public' ); header( 'Expires: 0' ); header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );

我有一个嵌入式mp3播放器,我正在网页上运行。当我加载一个物理mp3的路径作为文件url时,它工作得很好,但是当我尝试从php端点加载mp3二进制数据时,它失败了

下面是我通过php输出mp3数据的步骤:

//Begin writing headers
header( 'Pragma: public' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Cache-Control: public' );
header( 'Content-Description: File Transfer' );
header( 'Content-Type:audio/mpeg');
header( 'Content-Disposition: inline;');
header( 'filename=SoundFile.mp3' );
header( 'Content-Transfer-Encoding: binary' );

//supply the length
$len = strlen($res['ReturnValue']);
header( 'Content-Length: ' . $len );

echo $res['ReturnValue']; exit();
// $res['ReturnValue'] is the actual binary data of the mp3
此外,当我在浏览器中运行php代码时,它会导致文件下载的名称和文件大小正确,但文件本身不会在任何东西(itunes/winamp/etc)上播放,就好像它已损坏一样


此数据的输出有什么问题导致它无法在嵌入式mp3播放器中播放?

字节数据没有正确输出给我,因此,我的标题不是问题。

您尝试过哪些浏览器?任何浏览器都会失败。它保存了一个文件,而这个文件不知怎么就被破坏了。它不会在媒体播放器中播放——输出的文件不好。
头('filename='。'SoundFile'。'mp3')?非常确定这应该是上一次调用
header()
…还有,您是如何为
$res['ReturnValue']
赋值的?这就是问题的症结所在…@Kristian lol。希望这能解决你的问题。永远不要依赖别人。作为旁注,请删除
内容描述
标题(非标准,无意义)和
内容传输编码
标题(在HTTP上下文中无意义),将
内容配置
合并为一行(不正确使用PHP的
标题()
函数),并将最后一行更改为
退出($res['ReturnValue']);
(更短,可读性更强)。此外,在输出二进制数据时,尤其要小心
标记之外的数据。