它可能不可能流二進制數據,但您可以使用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