Encode Blob to Base64 in JavaScript
要在 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 JavaScript