JavaScript bencode二进制长度

时间:2012-12-23 16:26:53

标签: javascript file binary

我正在尝试用JavaScript解码一个torrent文件,但长度并不好。

path = "file.torrent";
$.ajax({
    url: path,
    success: function (data) {
        console.log(data.length);
    }
});

我在PHP中做了同样的事情,长度是不同的。

$f=file_get_contents($filename, FILE_BINARY);
var_dump(strlen($f));

我认为ajax方法不会返回二进制文件。

如何在JavaScript中获得类似于file_get_contents($ filename,FILE_BINARY)的内容?

1 个答案:

答案 0 :(得分:0)

您可以将processData开关设置为false:

$.ajax({
    url: path,
    processData: false,
    success: function (data) {
        console.log(data.length);
    }
});

现在jQuery不会尝试智能化并根据服务器返回的Content-Type响应头自动解析数据,但它会将其作为原始数据传递给成功回调。显然,在javascript中处理二进制数据并不是这种语言的设计目的。对于HTML5,虽然有一些很好的补充。

另外值得一提的是,对从服务器收到的某些二进制数据调用.length可能没有多大意义,并且可能会出现javascript错误,因为此属性未定义。