3

以下のコードを使用して、JavaScript で 2 つの BLOB ファイルを読み込みます。

正確に同じかどうかを比較したい。

(blob1 === blob2) は、報告された各 BLOB のサイズが 574 バイトであっても、false を返します。私は何を間違っていますか?

  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();
    }
4

3 に答える 3

2

それらを比較するには FileReader を使用する必要があります

FileReaderのドキュメントはMDNにあります。データに最適な方法を選択する方法をご覧ください。

2 つのブロブを比較する無駄な方法は、それらのサイズを見ることです。ただし、同じサイズの 2 つのブロブは内容に関係なく true を返します。

new Blob([Math.random()]).size == new Blob([Math.random()]).size // true.

于 2017-08-03T17:43:47.700 に答える