Загрузите два файла blob в JavaScript, используя приведенный ниже код.Как сравнить два капли в JavaScript?
Я хочу сравнить их, чтобы убедиться, что они точно такие же.
(blob1 === blob2) возвращает false, хотя сообщаемый размер каждого блока составляет 574 байта. Что я делаю не так?
getHTTPAsBlob(url, callback) {
let cacheBust = Math.random().toString()
url = url + '?&cachebust=' + cacheBust
let xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function (e) {
if (xhr.status == 200) {
// get binary data as a response
let fileData = this.response;
let contentType = xhr.getResponseHeader("content-type")
var reader = new FileReader()
reader.onload = (e) => {
console.log(reader.result)
console.log(fileData)
callback(null, {
Body: reader.result,
Blob: fileData,
ContentType: contentType,
Etag: null,
LastModified: null,
})
}
reader.readAsText(fileData)
} else {
callback(xhr)
}
}
xhr.send();
}
Я думаю, вам нужно прочитать «blob», если вы хотите сравнить его содержимое (используя FileReader). Не было бы проще установить responseType для «arraybuffer», особенно если они настолько малы? – Thilo
Если вы посмотрите на мой код, вы увидите, что он использует filereader для вывода текста из блоба, но это не относится к точке, для сравнения двух blobs не требуется чтение. –
@ DukeDugal: Почему чтение не нужно было бы сравнивать два капли? Как еще вы хотите сравнить их, если не по их содержанию? – Thilo