2

我正在尝试用 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) 的东西?

4

1 回答 1

0

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

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

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

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

于 2012-12-23T16:33:45.080 回答