Add new Blob.arrayBuffer method

Former-commit-id: bdb97550a8558a6e0364a10db061aa8cdff5075b [formerly d3df633a0bbe50087aad6cf234887f76c6a8fa79]
Former-commit-id: 28155de28dffa940acceb866b203d6b143501374
This commit is contained in:
Jaifroid 2020-03-01 10:59:42 +00:00
parent 5e2377393e
commit 509ee610c2

View File

@ -154,35 +154,41 @@ define(['q'], function(Q) {
return result; return result;
}); });
}; };
var readInternal = function(file, begin, end) { var readInternal = function (file, begin, end) {
return Q.Promise(function(resolve, reject) { if ('arrayBuffer' in Blob.prototype && file.readMode !== 'electron') {
if (file.readMode === 'electron') { return file.slice(begin, end).arrayBuffer().then(function (buffer) {
// We are reading a packaged file and have to use Electron fs.read (so we don't have to pick the file) return new Uint8Array(buffer);
fs.open(file.path, 'r', function (err, fd) { });
if (err) { } else {
reject(err); return Q.Promise(function (resolve, reject) {
} else { if (file.readMode === 'electron') {
var size = end - begin; // We are reading a packaged file and have to use Electron fs.read (so we don't have to pick the file)
var arr = typeof Buffer !== 'undefined' && Buffer.alloc(size) || new Uint8Array(size); fs.open(file.path, 'r', function (err, fd) {
fs.read(fd, arr, 0, size, begin, function (err, bytesRead, data) { if (err) {
if (err) reject(err); reject(err);
fs.close(fd, function (err) { } else {
var size = end - begin;
var arr = typeof Buffer !== 'undefined' && Buffer.alloc(size) || new Uint8Array(size);
fs.read(fd, arr, 0, size, begin, function (err, bytesRead, data) {
if (err) reject(err); if (err) reject(err);
else return resolve(data); fs.close(fd, function (err) {
if (err) reject(err);
else return resolve(data);
});
}); });
}); }
} });
}); } else {
} else { var reader = new FileReader();
var reader = new FileReader(); reader.readAsArrayBuffer(file.slice(begin, end));
reader.readAsArrayBuffer(file.slice(begin, end)); reader.addEventListener('load', function (e) {
reader.addEventListener('load', function(e) { resolve(new Uint8Array(e.target.result));
resolve(new Uint8Array(e.target.result)); });
}); reader.addEventListener('error', reject);
reader.addEventListener('error', reject); reader.addEventListener('abort', reject);
reader.addEventListener('abort', reject); }
} });
}); }
}; };
return { return {