从角度资源获取二进制文件

时间:2016-01-25 19:00:38

标签: javascript angularjs

我正在尝试使用角度资源来获取二进制文件。我可以用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){

返回的是文件的字符分割成一个巨大的数组。我真的不确定为什么。

1 个答案:

答案 0 :(得分:9)

我弄明白了这个问题。我需要添加transformResponse来处理资源中返回的arraybuffer。

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

这个答案就是我所需要的: https://stackoverflow.com/a/24290186/5838629