【发布时间】:2015-02-12 16:14:30
【问题描述】:
我从 HTTP 请求接收到以下二进制流:
HTTP 请求
Document.get({id: $scope.documentId}, function(stream){
});
角度工厂
.factory('Document', ['$resource', 'DOCUMENTS_CONFIG',
function($resource, DOCUMENTS_CONFIG) {
return $resource(DOCUMENTS_CONFIG.DETAIL_URL, {}, {
get: {
method: 'GET',
params: {},
url: DOCUMENTS_CONFIG.DETAIL_URL,
isArray: false
}
});
}
]);
回应
console.log(流) 我需要将其转换为 Uint8Array。我尝试将其转换为 bas64
// Convert Binary Stream To String
var dataString = JSON.stringify(stream);
// Convert to Base 64 Data
var base64Data = window.btoa(unescape(encodeURIComponent(dataString)));
当我运行它时,我得到一个错误“格式错误的 uri 异常”。我也试过 window.btoa(dataString) 但我得到'无法在'Window'上执行'btoa':要编码的字符串包含Latin1范围之外的字符。'
如何将其转换为 Uint8Array?
【问题讨论】:
-
我根据您提供的知识修改了下面的答案。您是否也可以共享用于发出请求的代码?是 AJAX 吗?该 AJAX 调用的预期返回类型是什么?
-
是的 - 将分享。这是一个 Angular HTTP 请求。
-
HTTP 请求已添加
-
啊,我对 Angular 不太熟悉(而且 10 分钟的搜索很难找到确切返回的具体文档),我确实修改了下面的答案以说明Javascript 对象(打印到控制台的内容)而不是字符串。
标签: javascript angularjs uint8t binarystream