Có thể không thể dòng dữ liệu nhị phân, nhưng bạn có thể sử dụng Ajax để truy xuất dữ liệu nhị phân.
Có thể sử dụng một trong hai phương pháp: Javascript Typed Arrays hoặc hack một lỗi XMLHttpResponse overrideMimeType. Có một chi của một bài viết tốt về MDN - những ví dụ được lấy từ đó: Sending and Receiving Binary Data
Phương pháp Mảng Typed trông như thế này:
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);
Mảng Typed không được hỗ trợ trong IE < 10, Firefox < 4 , Chrome < 7, Safari < 5.1 và Opera < 11.6 và mobile support is shaky but improving.
Phương pháp thứ hai sử dụng phương thức XMLHttpRequest gọi là overrideMimeType để cho phép dữ liệu nhị phân được truyền qua chưa sửa đổi.
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;
Bạn nhận được chuỗi nhị phân chưa được phân loại, khi đó bạn có thể sử dụng var byte = filestream.charCodeAt(x) & 0xff;
để truy xuất một byte cụ thể.
Nguồn
2012-05-18 04:19:22
Điều này phải được chấp nhận làm câu trả lời. – Pacerier
tại sao ''văn bản \/đồng bằng; charset = x-người dùng xác định'' và không phải là v.d.''text \/plain \; \ charset \ = x \ -user \ -defined'' hoặc'' text/plain; charset = x-người dùng định nghĩa''? :) – mykhal