【问题标题】:Reading remote binary file for parsing读取远程二进制文件进行解析
【发布时间】:2014-01-25 22:10:21
【问题描述】:

我在远程服务器上有一个文件,它是二进制的,我知道如何处理它的位。但我无法下载并将其呈现为带有 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 个小时。

【问题讨论】:

    标签: javascript ajax parsing binary


    【解决方案1】:

    对此不是百分百肯定,但我相信您无法使用 jQuery 的 ajax 方法获取二进制数据。现在有了html5,情况可能会有所改变。无论如何,这是一种你可以做到这一点的 hacky 方式。

    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/

    【讨论】:

      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多