Javascript 从blob获取有效的二进制文件
我需要从文件输入中获得正确的二进制字符串(用于进一步的操作)。我正在通过FileReader获取代码,但代码是错误的。在下一段代码中,我将获取二进制字符串并尝试从中构建blob: 这就是一个例子。 对于我正在使用的测试,但它不是关于音频web api的,它只是一些示例文件 我已经厌倦了和它斗争:(真的,谢谢Javascript 从blob获取有效的二进制文件,javascript,binary,blob,filereader,Javascript,Binary,Blob,Filereader,我需要从文件输入中获得正确的二进制字符串(用于进一步的操作)。我正在通过FileReader获取代码,但代码是错误的。在下一段代码中,我将获取二进制字符串并尝试从中构建blob: 这就是一个例子。 对于我正在使用的测试,但它不是关于音频web api的,它只是一些示例文件 我已经厌倦了和它斗争:(真的,谢谢 readAsBinaryString已弃用,请勿使用 从readasarrystring获取的字符串不是“二进制”的,它只是文本。二进制部分在于如何创建字符串(每个字节都读入一个字符)。如
readAsBinaryString
已弃用,请勿使用readasarrystring
获取的字符串不是“二进制”的,它只是文本。二进制部分在于如何创建字符串(每个字节都读入一个字符)。如果希望结果是二进制的,请使用readasarraybuffer
最好是创建像fiddle这样的东西,我认为plnkr最适合这种情况,我的意思是,创建工作示例我不需要保存这个文件。这只是测试二进制的方法。关键短语:我需要获得正确的二进制字符串(用于进一步的操作)。我在第一篇文章中有更新链接,请看。JavaScript中的字符串是16位值的序列,您不能在其中存储任意二进制数据。只需将函数中的8替换为16,您将看到发生了什么:)发生了什么:获得了二进制:杏卧Ȁs導찥恜ጁ灏獵效摡āༀ伀杧s猀Ŝꀀ⺲ĩ优異味条ࡳ刀捥牯敤R伀杧s猀ɜᴀ㝚Í一些日本消息而不是二进制:(我不知道那是什么意思。你到底想用这个字符串做什么?
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 );
})
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 );
});