我正在发出XHR请求。在提出请求时,我不知道URL是否会返回图像,因此我设置xhr.responseType="text"
如果响应返回Content-Type of image / png [或任何其他图像MIME类型],我正在使用xhr.responseType="arraybuffer"
发出另一个请求。然后我使用返回的arraybuffer来渲染图像:
var uInt8Array = new Uint8Array(arraybuffer);
var i = uInt8Array.length;
var binaryString = new Array(i);
while (i--) {
binaryString[i] = String.fromCharCode(uInt8Array[i]);
}
var data = binaryString.join('');
var base64 = window.btoa(data);
//use this base64 string to render the image
有什么方法可以避免提出第二次请求吗?
我试过这个 -
var buf = new ArrayBuffer(responseText.length);
var bufView = new Uint8Array(buf);
for (var i=0, i<responseText.length; i++) {
bufView[i] = responseText.charCodeAt(i);
}
return buf;
但是responseText
与第一个代码示例中的data
不同,并且生成的ArrayBuffer无法正确呈现图像。