Ich lade zwei Blob-Dateien in JavaScript mit dem folgenden Code.Wie zwei Blobs in JavaScript zu vergleichen?
Ich möchte sie vergleichen, um zu sehen, ob sie genau gleich sind.
(blob1 === blob2) gibt false zurück, obwohl die gemeldete Größe jedes Blobs 574 Byte beträgt. Was mache ich falsch?
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();
}
Ich denke, Sie müssen den "Blob" lesen, wenn Sie seinen Inhalt vergleichen möchten (mit FileReader). Wäre es nicht einfacher, responseType auf "arraybuffer" zu setzen, besonders wenn sie so klein sind? – Thilo
Wenn Sie sich meinen Code ansehen, sehen Sie, dass er filereader verwendet, um den Text aus dem Blob zu holen, aber das ist neben dem Punkt, das Lesen sollte nicht benötigt werden, um zwei Blobs zu vergleichen. –
@DukeDugal: Warum sollte Lesen nicht benötigt werden, um zwei Blobs zu vergleichen? Wie sonst wollen Sie sie vergleichen, wenn nicht durch ihre Inhalte? – Thilo