我有两个问题,一个是我无法循环播放歌曲(我在HTML中的音频标签中试过),另外两个是:无法加载资源:net :: ERR_CONTENT_LENGTH_MISMATCH。< / p>
其他信息: 这些文件托管在cPanel上。 我还在HTML文件中有其他javascript文件,音频标签放在其中,有时当我重新加载它时,错误有javascript问题。 CSS,PHP和JS文件也在同一个HTML文件中调用(如果重要的话) 此外,所有内容都通过HTTPS传输。
我想要完成的是使用PHP脚本在网页上播放音乐。此脚本从目录中提取mp3,mp4和m4a文件,而不必为方便起见绘制数组。我的朋友给了我这个PHP脚本,但我们似乎无法弄清楚问题,所以我在这里寻求帮助,因为我还没有完全理解PHP。
HTML code:
<audio autoplay="" loop="" preload="auto" id="music" src="https://example.com/audio/music.php">
<script type="text/javascript">
var audio = document.currentScript.parentElement;
audio.volume = 0.1;
</script>
</audio>
PHP文件:
<?php
$list = new RecursiveDirectoryIterator(__DIR__);
$filetypes = array('mp3', 'mp4', 'm4a');
$files = array();
foreach(new RecursiveIteratorIterator($list) as $file) {
if (in_array(strtolower(array_pop(explode('.', $file))), $filetypes))
$files[] = $file;
}
$rand = $files[array_rand($files, 1)];
header('Content-Type:'.mime_content_type($rand));
header('Content-Disposition: filename="'.basename($rand).'"');
header('Content-length: '.filesize($rand));
readfile($rand);
?>
我在Firefox中对此进行了测试,但我没有收到此错误消息: (无法加载资源:net :: ERR_CONTENT_LENGTH_MISMATCH) 并在我的example.com/audio/music.php文件中说这是问题。 但音频也不会循环播放。 我的朋友也在Brave和他的Chrome版本中对此进行了测试,但在我的Chrome版本中我遇到了这个问题。
我已经问了几个人,他们似乎无法弄清楚为什么这不起作用。我在这里看了几篇关于类似问题的帖子,似乎无法解决他们的建议。
我在PHP上有点像诺贝尔,所以如果你可以帮我指导如何解决它,比如在哪里添加,替换或删除代码,请告诉我在哪里。
感谢您的时间,希望我们能够让它发挥作用。
答案 0 :(得分:0)
生成此错误的问题出在我的PHP脚本中。
我在哪里: 标题(&#39;内容长度:&#39; .filesize($ rand));
相反,我需要: 标题(&#39; Content-Length:&#39; .filesize($ local_file));
由于我不太了解PHP,我假设使用$ local_file而不是$ rand,它会检查与脚本需要提取的文件位于同一目录中的文件大小。
如果你遇到这个问题并且你有一个类似我的标题问题会抛出相同的错误代码尝试使用$ local_file或这里的完整标题: 标题(&#39; Content-Length:&#39; .filesize($ local_file));