从PHP脚本获取音频文件时,更改JavaScript音频对象的当前时间
我已经构建了一个PHP脚本,它从public_html目录外发送*.MP3文件, 它工作正常并发送文件。问题是我有一个JavaScript脚本,它应该更改音频文件audioFile.currentTime=25;的当前时间;。 当我这样做时,从public_html目录中获取文件,它会工作:从PHP脚本获取音频文件时,更改JavaScript音频对象的当前时间,javascript,php,header,mp3,Javascript,Php,Header,Mp3,我已经构建了一个PHP脚本,它从public_html目录外发送*.MP3文件, 它工作正常并发送文件。问题是我有一个JavaScript脚本,它应该更改音频文件audioFile.currentTime=25;的当前时间;。 当我这样做时,从public_html目录中获取文件,它会工作: // JavaScript: var audioFile = new Audio("https://www.website.com/files/audioFile.mp3"); audioFile.play
// JavaScript:
var audioFile = new Audio("https://www.website.com/files/audioFile.mp3");
audioFile.play();
audioFile.currentTime = 15;
但是,当我尝试从下面的PHP脚本获取文件时,它会发送文件OK。但是,我不能使用JavaScript更改当前时间
<?php
// This PHP file is public www.website.com/getAudioFile.php/
$fileLocation = "../audioFiles/audioFile.mp3";
if (file_exists($fileLocation))
{
header('Content-type: audio/mpeg');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
readfile($file);
}
?>
这是我试图在其中更改音频文件currentTime的JavaScript:
<script>
var audioFile = new Audio("www.website.com/getAudioFile.php");
audioFile.play();
audioFile.currentTime = 15;
</script>
每次使用object.currentTime=15时,音频文件都会从一开始播放
如果有人知道我应该发送什么标题或我应该做什么,请告诉我如何解决我的问题。也许您应该从音频组件和此回调集合currentTime属性中绑定canplay事件
在我发布这个问题后不久,我找到了问题的解决方案。 为了使脚本工作,您需要添加标题“Accept-Ranges:bytes” 像这样:
<?php
// This PHP file is public www.website.com/getAudioFile.php/
$fileLocation = "../audioFiles/audioFile.mp3";
if (file_exists($fileLocation))
{
header('Content-type: audio/mpeg');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header('Content-Length: ' . filesize($file));
readfile($file);
}
?>
谢谢你的回答,但在我发布这个问题后,我马上找到了解决方案。如果您遇到同样的问题,只需在PHP脚本中添加Accept-Ranges标题“Accept-Ranges:bytes”。@JosephVigdorovich,如果您有答案,请将其作为此问题的答案发布,以便每个人都能分享您的知识。这就是叠加叠加的目的。谢谢