我希望加载一个mp3本地文件,然后使用库进行处理,我不能使用XMLHttpRequest,然后我使用下一个代码读取本地mp3文件:
<!DOCTYPE html>
<html>
<head>
</head>
<body onload="carga();">
<input id="audio_file" type="file" accept="audio/*" />
<audio id="audio_player" />
<script>
function carga() {
audio_file.onchange = function(){
var files = this.files;
console.log(files);
alert(files);
var file = URL.createObjectURL(files[0]);
console.log(file);
alert(file);
audio_player.src = file;
audio_player.play();
};
}
</script>
</body>
</html>
但是XMLHttpRequest返回ArrayBuffer,我的代码返回一个FileList,我需要一个ArrayBuffer为我的下一个处理,我怎么能加载一个本地mp3文件作为ArrayBuffer?
在现代浏览器中,您可以使用FileReader
和它的方法readAsArrayBuffer
。
document.querySelector('input').onchange = function(){
var fileReader = new FileReader;
fileReader.onload = function(){
var arrayBuffer = this.result;
snippet.log(arrayBuffer);
snippet.log(arrayBuffer.byteLength);
}
fileReader.readAsArrayBuffer(this.files[0]);
var url = URL.createObjectURL(this.files[0]);
audio_player.src = url;
audio_player.play();
};
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<input id="audio_file" type="file" accept="audio/*" />
<audio id="audio_player" />