開発環境 メモ帳
実行環境 Internet Explorer 11


WavePlayer1.html
<!doctype html>
<head>
<title>WavePlayer1</title>
<script>
 
var wavfile;
 
function onDragOver(event)
{
	event.preventDefault();
}
 
function onDrop(event)
{
	event.preventDefault();
 
	var files = event.dataTransfer.files;
	var file = files[0];
	var drop = document.getElementById("drop");
 
	var str = "";
	str += "name=[" + file.name + "]<br>";
	str += "type=[" + file.type + "]<br>";
	str += "size=[" + file.size + "]<br>";
	drop.innerHTML = str;
 
	if (file.type != "audio/wav") {
		drop.innerHTML += "wavファイルではありません。";
		return;
	}
 
	var reader = new FileReader();
	reader.onload = onLoad;
	reader.readAsArrayBuffer(file);
}
 
function onLoad(event)
{
	var buf = event.target.result;
	var dv = new DataView(buf);
	var pos = 0;
	var drop = document.getElementById("drop");
 
	wavfile = new Uint8Array(buf);
 
	// RIFFチャンク
	{
		var ckid = fourcc(dv, 0); // RIFF
		var cksize = dv.getUint32(4, true);
		var fccType = fourcc(dv, 8); // WAVE
		pos += 12;
 
		var str = "";
		str += "<br>";
		str += "ckid=[" + ckid + "]<br>";
		str += "cksize=[" + cksize + "]<br>";
		str += "fccType=[" + fccType + "]<br>";
		drop.innerHTML += str;
	}
}
 
function fourcc(dv, pos)
{
	var str = "";
	for (var i = 0; i < 4; i++) {
		str += String.fromCharCode(dv.getUint8(pos + i));
	}
	return str;
}
 
function download()
{
//	var st = [0x30, 0x31, 0x0d, 0x0a];
//	var ar = new Uint8Array(st);
	var blob = new Blob([wavfile]);
	navigator.msSaveOrOpenBlob(blob, "sample.wav");
}
 
</script>
</head>
 
<body>
<div id="drop" style="width:800px; height:480px; padding:10px; border:3px solid"
 ondragover="onDragOver(event)" ondrop="onDrop(event)">
ここにwavファイルをドロップします。
</div>
<br>
<button onclick="download()">download</button>
</body>
 
最終更新:2015年02月06日 05:59