我已经构建了一个发送*的PHP脚本。html目录之外形成MP3文件,它工作正常并发送文件。问题是我有一个JavaScript脚本,它应该更改音频文件(audioFile.currentTime = 25
;)的当前时间。当我这样做(从public_html目录中获取文件)时,它起作用:
// JavaScript:
var audioFile = new Audio("https://www.website.com/files/audioFile.mp3");
audioFile.play();
audioFile.currentTime = 15;
但是,当我试图从下面的PHP脚本中获取文件时,它会发送文件OK。但是,我无法使用JavaScript 更改"currentTime"
<?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
时,音频文件都会从头开始播放。
如果有人知道我应该发送什么标题或我应该做什么,请告诉我如何解决我的问题。
也许您应该绑定canplay来自Audio组件的事件,并在此回调中设置currentTime属性。
http://www.w3schools.com/tags/av_event_canplay.asp
在我发布这个问题后不久,我找到了问题的解决方案。为了使脚本工作,您需要添加header('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);
}
?>