diff --git a/lib/browser/managed-upload.js b/lib/browser/managed-upload.js
index <HASH>..<HASH> 100644
--- a/lib/browser/managed-upload.js
+++ b/lib/browser/managed-upload.js
@@ -303,10 +303,25 @@ WebFileReadStream.prototype._read = function _read(size) {
   }
 };
 
+function getBuffer(file) {
+  // Some browsers do not support Blob.prototype.arrayBuffer, such as IE
+  if (file.arrayBuffer) return file.arrayBuffer();
+  return new Promise((resolve, reject) => {
+    const reader = new FileReader();
+    reader.onload = function (e) {
+      resolve(e.target.result);
+    };
+    reader.onerror = function (e) {
+      reject(e);
+    };
+    reader.readAsArrayBuffer(file);
+  });
+}
+
 proto._createBuffer = async function _createBuffer(file, start, end) {
   if (isBlob(file) || isFile(file)) {
     const _file = file.slice(start, end);
-    const fileContent = await _file.arrayBuffer();
+    const fileContent = await getBuffer(_file);
     return Buffer.from(fileContent);
   } else if (isBuffer(file)) {
     return file.subarray(start, end);
fix: use arrayBuffer first, fall back to FileReader if it does not work (#<I>)