Этот jsfiddle отлично работает в браузере Chrome на Ma c. Здесь также код:
// http://www.henryalgus.com/reading-binary-files-using-jquery-ajax/
function fetchBlob(uri, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", uri, true);
xhr.responseType = "arraybuffer";
xhr.onload = function (e) {
if (this.status == 200) {
var blob = this.response;
if (callback) {
callback(blob);
}
}
};
xhr.send();
}
// http://stackoverflow.com/a/9458996/128597
function _arrayBufferToBase64(buffer) {
var binary = "";
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return btoa(binary);
}
fetchBlob(
"https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Jsfiddle-logo.png/250px-Jsfiddle-logo.png",
(blob) => {
let base64 = _arrayBufferToBase64(blob);
console.log(base64);
document.getElementById("base64").src = "data:image/png;base64," + base64;
}
);
Тот же код (за исключением функции документа) в среде nodejs с использованием xmlhttprequest и btoa не возвращает результат в функция xhr.onload
в объекте this.response
(строка 9 в скрипте).
В чем разница и что нужно изменить, чтобы он работал таким же образом?