我正在尝试用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)的内容?
答案 0 :(得分:0)
您可以将processData
开关设置为false:
$.ajax({
url: path,
processData: false,
success: function (data) {
console.log(data.length);
}
});
现在jQuery不会尝试智能化并根据服务器返回的Content-Type响应头自动解析数据,但它会将其作为原始数据传递给成功回调。显然,在javascript中处理二进制数据并不是这种语言的设计目的。对于HTML5,虽然有一些很好的补充。
另外值得一提的是,对从服务器收到的某些二进制数据调用.length
可能没有多大意义,并且可能会出现javascript错误,因为此属性未定义。