我使用下面的代码在JavaScript中加载两个blob文件。
我想比较它们,看它们是否完全相同。
(blob1 === blob2)返回false,即使每个blob的报告大小为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();
}
答案 0 :(得分:2)
FileReader的文档位于MDN。看一下方法,选择最适合您数据的方法。
比较两个blob的无用方法是查看它们的大小。虽然两个相同大小的斑点无论其内容如何都会返回。
facebook.com/settings
。
答案 1 :(得分:0)
不幸的是,这是一个比较引用可比内容的两个完全独立的指针的情况。要了解这对于更简单的内容有何用处,请在javascript控制台中尝试以下操作:
new Number(5) == new Number(5)
返回false。令人沮丧的是,作为一个对象的5不等于一个值为5的对象。但至少这会将Blob置于上下文中。
我遇到了同样的问题,并且同意之前的建议,即FileReader是唯一的选择。
答案 2 :(得分:0)
我认为“ blob compare”插件将为您提供帮助。 它可以比较Blob的大小,类型等。 https://www.npmjs.com/package/blob-compare
但是我不知道这个插件是否是完美的方法。