JavaScript代码二进制长度

JavaScript代码二进制长度,javascript,file,binary,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)); 我认

我试图用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中获得类似文件内容($filename,file\u BINARY)的内容?

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

$.ajax({
    url: path,
    processData: false,
    success: function (data) {
        console.log(data.length);
    }
});
现在,jQuery不会试图变得智能化,不会根据服务器返回的Content-Type响应头自动解析数据,而是将其作为原始数据传递给success回调。显然,用javascript处理二进制数据并不是这种语言设计的目的。HTML5有一些不错的补充


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

javascript对二进制数据的处理不太好。除非你有一个现代化的浏览器/js引擎,否则你根本无法处理它。我可以大胆猜测一下:如果你还没有使用
应用程序/octet流的
内容类型
。我添加了processData:false,但长度仍然错误。我如何才能正确地使用它?因为我需要长度来检查文件完整性是否正常,但是
数据
实例上是否有
length
属性?您是否尝试将数据记录到控制台?它看起来怎么样?它看起来像一个字符串,但有一部分是二进制的,如下所述