Fix extremely slow binary to base64 (#3201)

This commit is contained in:
windingwind 2023-07-06 13:56:38 +08:00 committed by GitHub
parent 8017b2ab1b
commit a2e8be2af5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 14 deletions

View file

@ -3613,13 +3613,18 @@ Zotero.defineProperty(Zotero.Item.prototype, 'attachmentDataURI', {
return '';
}
let buf = await OS.File.read(path, {});
let bytes = new Uint8Array(buf);
let binary = '';
let len = bytes.byteLength;
for (let i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return 'data:' + this.attachmentContentType + ';base64,' + btoa(binary);
buf = new Uint8Array(buf).buffer;
return new Promise((resolve, reject) => {
let blob = new Blob([buf], { type: this.attachmentContentType });
let reader = new FileReader();
reader.onloadend = function () {
resolve(reader.result);
}
reader.onerror = function (e) {
reject("FileReader error: " + e);
};
reader.readAsDataURL(blob);
});
}
});

View file

@ -831,13 +831,18 @@ Zotero.File = new function(){
}
var buf = await OS.File.read(file, {});
var bytes = new Uint8Array(buf);
var binary = '';
var len = bytes.byteLength;
for (let i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return 'data:' + contentType + ';base64,' + btoa(binary);
buf = new Uint8Array(buf).buffer;
return new Promise((resolve, reject) => {
let blob = new Blob([buf], { type: contentType });
let reader = new FileReader();
reader.onloadend = function () {
resolve(reader.result);
}
reader.onerror = function (e) {
reject("FileReader error: " + e);
};
reader.readAsDataURL(blob);
});
};