要在JavaScript中将Blob对象编码为Base64,您能够使用
FileReader.readAsDataURL()
方法。下面我提供了一个简单的例子,大多数流行的浏览器(Chrome 6 +,Edge 12 +,Firefox 3.6 +,Internet Explorer 10 +,Safari 6+)都支持这些浏览器。
// 建立的Blob对象 var blob = new Blob(['Welcome to <b>base64.guru</b>!'], {type: 'text/html'}); // 定义可以读取Blob内容的FileReader var reader = new FileReader(); reader.onload = function () { // 因为它包含数据URI,咱们应该删除前缀并仅保留Base64字符串 var b64 = reader.result.replace(/^data:.+;base64,/, ''); console.log(b64); //-> "V2VsY29tZSB0byA8Yj5iYXNlNjQuZ3VydTwvYj4h" // 解码Base64编码字符串并显示结果 var html = atob(b64); console.log(html); //-> "Welcome to <b>base64.guru</b>!" }; // 因为一切都已设置,读取并将结果存储为数据URI reader.readAsDataURL(blob);
将Blob转换为Base64的另外一种方法是调用reader.readAsBinaryString(blob)
并使用它btoa(reader.result)
来获取Base64字符串。可是,此方法极可能工做较慢,而且根本不受Internet Explorer支持。
Encode Blob to Base64 in JavaScriptjavascript