从 blob 获取有效的二进制文件
Obtaining valid binary from blob
我需要从文件输入中获取正确的二进制字符串(用于进一步操作)。我正在通过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 );
})
下面是示例。对于测试,我正在使用这个 ogg 文件,但它与音频 web api 无关,它只是一些示例文件。
我已经厌倦了与它战斗:(真的谢谢。
-
readAsBinaryString
已弃用,请不要使用它 - 你从
readAsBinaryString
得到的字符串不是"二进制"的,它只是文本,二进制部分是字符串的创建方式(每个字节被读入一个字符)。如果希望结果是二进制的,请使用readAsArrrayBuffer
。 - 可以使用文件创建对象 URL(blob 的文件实例 === true)
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 );
});
相关文章:
- 如何将PDF作为二进制文件传递到window.open()
- 如何在Windows中将Javascript文件编译成二进制文件
- 在Internet Explorer中从二进制文件打开PDF
- 如何使用JavaScript粘贴原始二进制文件而不出现“无效字符”错误
- AngularJS分为多个文件-只有最后一个文件有效
- 使用JavaScript从二进制文件中读取字节,而不使用jQuery
- 使用 node.js 从 Google 云端硬盘读取二进制文件
- 使用 JQuery 读取二进制文件的浏览器之间的不同行为
- 如何获取 CasperJS 请求的图像的二进制文件
- 使用 Node.js 执行命令行二进制文件
- 将用JavaScript生成的二进制文件保存到iPad
- 希望将客户端生成的二进制文件保存到客户端机器
- 使用jQuery从服务器下载二进制文件
- 如何通过URI引用外部二进制文件
- 将 noteCount 转换为 tumblr 主题的二进制文件
- Javascript 二进制文件到服务器
- 从 blob 获取有效的二进制文件
- 从二进制文件流式传输 JS
- 使用位于插件文件夹内的参数执行二进制文件
- 在Firefox或Chrome中获取二进制文件,而无需提出新请求