用户上传音频仅在客户端播放 javascript
Users uploads audio to play only on client-side javascript
很简单,我只想让用户从他们的目录中选择一个音频文件,让网页只播放他们上传的音频文件。
我不想向服务器发送数据;我只希望音频文件驻留在客户端。
images 有类似的指南,但我不确定如何开始为音频做这件事?我应该使用什么API?
这是一个使用 Javascript 的解决方案。我在代码中添加了注释。
如果您还没有熟悉 FileReader object and the readAsDataURL 方法。
尝试在下面的代码片段中上传音频文件以查看实际效果。
//get input by id
var audioFile = document.getElementById("file")
//get source by id
var audioSource = document.getElementById("audioSource");
//get audio by id
var audioTag = document.getElementById('audio');
//apply event listener to input using the playAudio function
audioFile.addEventListener("change", function() {
playAudio(this);
});
function playAudio(input) {
//empty var to read file
var reader;
//if a file is uploaded then use FileReader to read file
if (input.files && input.files[0]) {
reader = new FileReader();
//onload set the audio source with the uploaded audio
reader.onload = function(e) {
audioSource.setAttribute('src', e.target.result);
//load source
audioTag.load();
//play source
audioTag.play();
}
//read contents of of file
reader.readAsDataURL(input.files[0]);
}
}
<input type="file" id="file">
<audio id="audio">
<source id="audioSource" src=""></source>
</audio>
很简单,我只想让用户从他们的目录中选择一个音频文件,让网页只播放他们上传的音频文件。
我不想向服务器发送数据;我只希望音频文件驻留在客户端。
images 有类似的指南,但我不确定如何开始为音频做这件事?我应该使用什么API?
这是一个使用 Javascript 的解决方案。我在代码中添加了注释。
如果您还没有熟悉 FileReader object and the readAsDataURL 方法。
尝试在下面的代码片段中上传音频文件以查看实际效果。
//get input by id
var audioFile = document.getElementById("file")
//get source by id
var audioSource = document.getElementById("audioSource");
//get audio by id
var audioTag = document.getElementById('audio');
//apply event listener to input using the playAudio function
audioFile.addEventListener("change", function() {
playAudio(this);
});
function playAudio(input) {
//empty var to read file
var reader;
//if a file is uploaded then use FileReader to read file
if (input.files && input.files[0]) {
reader = new FileReader();
//onload set the audio source with the uploaded audio
reader.onload = function(e) {
audioSource.setAttribute('src', e.target.result);
//load source
audioTag.load();
//play source
audioTag.play();
}
//read contents of of file
reader.readAsDataURL(input.files[0]);
}
}
<input type="file" id="file">
<audio id="audio">
<source id="audioSource" src=""></source>
</audio>