Это прекрасно работает для меня:
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));
В ES6 синтаксис немного проще:
let base64String = btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));
Как указано в комментариях, этот метод может привести кошибка во время выполнения в некоторых браузерах, когда ArrayBuffer большой.Точное ограничение размера зависит от реализации в любом случае.