我需要从文件输入中获取正确的二进制字符串(用于进一步操作)。我通过FileReader获取代码,但代码错误。在接下来的代码中我得到二进制字符串并尝试从中构建blob:
function sendBlobToBrowser( blob )
{
var url = window.URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = 'audio.ogg';
a.click();
setTimeout(function() {
window.URL.revokeObjectURL(url);
}, 100)
}
function buildBlobFromString( binaryString )
{
return new Blob( [ binaryString ], { type : 'audio/ogg' } );
}
$( '#fileInput' ).change( function()
{
var file = this.files[ 0 ]
var reader = new window.FileReader();
reader.onloadend = function() {
var binary = this.result;
console.log( 'Converted string src: ' + binary )
// trying to build blob
var builtBlob = buildBlobFromString( binary );
sendBlobToBrowser( builtBlob )
}
reader.readAsBinaryString( file );
})
https://github.com/dimka665/awesome-slugify/issues/24就是一个例子。 对于我使用Here的测试,但它不是关于audio web api,它只是一些示例文件。
我已经厌倦了与它抗争:(真的是thx。
答案 0 :(得分:0)
readAsBinaryString
已弃用,请勿使用readAsBinaryString
获得的字符串不是“二进制”,它只是文本的二进制部分是如何创建字符串(每个字节被读入一个字符)。如果您希望结果为二进制,请使用readAsArrrayBuffer
。function sendBlobToBrowser( blob )
{
var url = window.URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = 'audio.ogg';
a.click();
setTimeout(function() {
window.URL.revokeObjectURL(url);
}, 100);
}
$( '#fileInput' ).change( function()
{
var file = this.files[ 0 ];
sendBlobToBrowser( file );
});