2016-01-25 38 views
1

我正在嘗試使用角度資源來獲取二進制文件。我可以用http.get來做到這一點。從角度資源獲取二進制文件

return $http.get("http://localhost:8080/users/my_user/avatar", {responseType:'arraybuffer'}); 

這將返回文件的字符串。這就是我想要的。

當嘗試使用資源:

var resource4 = $resource('/users/:userId/avatar',{},{'get':{method:'GET',cache:false,responseType:'arraybuffer'},'getCached':{method:'GET',cache:true,responseType:'arraybuffer'}, 'postList':{method:'POST', isArray:true}}); 

我返回一個對象與get方法在這裏:

getAvatar: function(userId, successCallback, errorCallback) { 

       var requestData = { userId: convertValueForRest(userId)}; 
       return resource4.get(requestData, successCallback, errorCallback); 

      } 

然後,我把它注射到服務,並使之通過:

function getAvatar(user){ 
    return UserDetailsInterface.getAvatar(user); 
} 

我從$ promise獲取數據:

UserPreferences.getAvatar(userName).$promise 
        .then(function success(image){ 

返回的是將文件的字符拆分成一個巨大的數組。我真的不知道爲什麼。

+0

嘗試設置'IsArray的:在獲取配置 – tymeJV

+0

似乎並沒有得以順利返回FALSE。如果省略,我認爲這是數組默認爲false。 –

回答

6

我想出了這個問題。我需要添加transformResponse來處理資源中返回的數組緩衝區。

transformResponse: function(data, headersGetter) { return { data : data }} 

這個答案是我需要的東西: https://stackoverflow.com/a/24290186/5838629