接收二进制数据

课后整理 2020-12-20

XMLHttpRequest 1.0版本只能从服务器接收文本数据,新版则可以接收二进制数据。使用新增的responseType属性,可以从服务器接收二进制数据。

var xhr = new  XMLHttpRequest();
xhr.open('GET',  '/path/to/image.png');
xhr.responseType =  'blob';

接收数据的时候,用浏览器自带的Blob对象即可。

var blob = new  Blob([xhr.response], {type: 'image/png'});

注意,是读取xhr.response,而不是xhr.responseText。

var xhr = new  XMLHttpRequest();
xhr.open('GET',  '/path/to/image.png');
xhr.responseType =  "arraybuffer";

接收数据的时候,需要遍历这个数组。

var arrayBuffer =  xhr.response;
if (arrayBuffer) {
  var byteArray = new Uint8Array(arrayBuffer);
  for (var i = 0; i < byteArray.byteLength; i++) {
    //执行代码
  }
}