它可能不可能流二进制数据,但您可以使用Ajax检索二进制数据。
这是可能的使用两种方法之一:Javascript Typed Arrays或XMLHttpResponse overrideMimeType黑客入侵。对MDN的好文章的读 - 这些例子都存放于此:Sending and Receiving Binary Data
的类型数组的方法是这样的:
var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "arraybuffer";
oReq.onload = function (oEvent) {
var arrayBuffer = oReq.response; // Note: not oReq.responseText
if (arrayBuffer) {
var byteArray = new Uint8Array(arrayBuffer);
for (var i = 0; i < byteArray.byteLength; i++) {
// do something with each byte in the array
}
}
};
oReq.send(null);
类型数组没有在IE < 10支持,火狐< 4 ,Chrome < 7,Safari < 5.1和Opera < 11.6和mobile support is shaky but improving。
第二种方法使用名为overrideMimeType的XMLHttpRequest方法允许二进制数据通过未经修改的方式传递。
var req = new XMLHttpRequest();
req.open('GET', '/myfile.png', false);
// XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.send(null);
if (req.status != 200) return '';
// do stuff with req.responseText;
你会得到一个未解析二进制字符串,在其中您可以使用var byte = filestream.charCodeAt(x) & 0xff;
检索特定字节。
这应该被接受为答案。 – Pacerier 2013-03-08 12:13:02
为什么''text \/plain; charset = x-user-defined''而不是例如''text \/plain \; \ charset \ = x \ -user \ -defined''或''text/plain; charset = x-user-defined''? :) – mykhal 2014-09-26 10:49:26