У меня есть несколько файлов (~ 30 МБ каждый), которые нужно преобразовать в base64 и загрузить на сервер. После загрузки части файлов IE11 выдает TypeMismatchError. Содержимое файла представляет собой строку base64, которая не является проблемой кодирования. Панель сетевых запросов не содержит его, запрос завершается ошибкой перед отправкой. Другие браузеры работают без ошибок. Как это исправить?
function post(url, data, timeout) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = (result) => {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
resolve(xhr.responseText);
}
};
xhr.onerror = function (event) {
reject(event);
};
xhr.timeout = timeout;
xhr.send(data);
});
}
function handleFileSelect() {
post('/upload', LARGE_FILE_DATA_BASE64).catch(error => {
// Throws TypeMismatchError error after few uploads.
});
}
Google говорит об этой подобной проблеме только здесь: https://helperbyte.com/questions/276626/jquery-deferrer-typemismatcherror-when-you-bulk-load-data-cant-find-what-this-may-mean