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