7
我有以下資源:檢索二進制數據,而無需使用arraybuffer
function _arrayBufferToBase64(buffer) {
var binary = '';
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[ i ]);
}
return window.btoa(binary);
}
var API = $resource(server + 'album', {}, {
get: {
url: server + 'album/:albumId/photo/:photoId',
method: 'GET',
responseType: 'arraybuffer',
headers: {
'AuthToken': 'the secret',
'Accept': 'image/*'
},
interceptor: {
response: function(resp) {
return 'data:'+ resp.headers('Content-Type') + ';base64,' + _arrayBufferToBase64(resp.data)};
}
}
}
});
它的作用是接收來自服務器的文件的二進制內容,並與內部的base64數據返回的數據URI。
我不得不說,這個調用不能用一個簡單的src標籤替換爲url,因爲有一些驗證頭也發送了。
這在新的瀏覽器中正常工作,但我想保持與舊瀏覽器的兼容性,所以arraybuffer是一個問題在這裏,我的問題是:有沒有辦法做到所有這些沒有arraybuffer?
我試圖刪除響應類型,並使用描述here但沒有成功,在resp.data中轉換字符串。
你可能想檢查這個相關的問題。有些答案可能會幫助您找到解決方案。 http://stackoverflow.com/questions/20617720/why-doesnt-the-browser-reuse-the-authorization-headers-after-an-authenticated-x – Sylvain
你可以存儲二進制字符串中的你處理unicode轉換對每個字符進行循環位移,就像你用來打包AB一樣。谷歌「二進制ajax」,並尋找舊的例子。 – dandavis