将文本XHR-Response转换为arraybuffer

时间:2015-03-12 10:12:04

标签: javascript html image xmlhttprequest

我正在发出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无法正确呈现图像。

0 个答案:

没有答案