Skip to content

Commit a8eea2f

Browse files
committed
fix: support legacy blob implementations
1 parent 2a82dd5 commit a8eea2f

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

lib/uploader.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ function getBlobArrayBuffer(file) {
107107
return file.arrayBuffer();
108108
}
109109

110+
let blobBuffer = getBlobBuffer(file);
111+
if (blobBuffer) {
112+
return Promise.resolve(blobBuffer.buffer.slice(blobBuffer.byteOffset, blobBuffer.byteOffset + blobBuffer.byteLength));
113+
}
114+
110115
if (typeof FileReader !== "undefined") {
111116
return new Promise((resolve, reject) => {
112117
let reader = new FileReader();
@@ -123,6 +128,21 @@ function getBlobArrayBuffer(file) {
123128
return Promise.reject(new Error("Blob upload requires Blob.arrayBuffer() or FileReader support"));
124129
}
125130

131+
function getBlobBuffer(file) {
132+
if (typeof Object.getOwnPropertySymbols !== "function") {
133+
return null;
134+
}
135+
136+
for (let symbol of Object.getOwnPropertySymbols(file)) {
137+
let implementation = file[symbol];
138+
if (implementation && Buffer.isBuffer(implementation._buffer)) {
139+
return implementation._buffer;
140+
}
141+
}
142+
143+
return null;
144+
}
145+
126146
function isUploadData(file) {
127147
return Buffer.isBuffer(file) || isUint8Array(file) || isArrayBuffer(file);
128148
}

0 commit comments

Comments
 (0)