读取远程二进制文件进行解析

时间:2014-01-08 00:46:23

标签: javascript ajax parsing binary

我在远程服务器上有一个文件,它是二进制文件,我知道如何处理它的位。但我无法下载并使用Javascript将其呈现为二进制字符串以供浏览器使用。从我读到的,这是我得到的:

function loadFile() {
  $.get('binaryfile.ext', function(data) {
    new FileReader().readAsBinaryString(data);
  });
}

但是我收到了这个错误:

Uncaught TypeError: Failed to execute 'readAsBinaryString' on 'FileReader': The argument is not a Blob.

文件正在正确下载,如果我document.write(data)它按预期打印文件内容。

我在网上找不到工作方法或示例,我大概要搜索16个小时。

1 个答案:

答案 0 :(得分:2)

不是百分百肯定这一点,但我相信你不能用jQuery的ajax方法获取二进制数据。现在html5可能事情可能会发生一些变化。无论如何,这是一种可以做到这一点的黑客方式。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'binaryfile.ext', true);

// Hack to pass bytes through unprocessed.
xhr.overrideMimeType('text/plain; charset=x-user-defined');

xhr.onreadystatechange = function(e) {
  if (this.readyState == 4 && this.status == 200) {
    var binStr = this.responseText;
    for (var i = 0, len = binStr.length; i < len; ++i) {
      var c = binStr.charCodeAt(i);
      //String.fromCharCode(c & 0xff);
      var byte = c & 0xff;  // byte at offset i
    }
  }
};

xhr.send();

您可以在此处找到更多信息:http://www.html5rocks.com/en/tutorials/file/xhr2/