2016-01-25 2 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}}); 

Я возвращает объект с методом получить здесь:

getAvatar: function(userId, successCallback, errorCallback) { 

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

      } 

Тогда я впрыскивать его в службу и передать его через:

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

Я беру данные от $ обещают здесь:

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

Что возвращается, символы файла разделены на огромный массив. Я действительно не знаю, почему.

+0

Попробуйте установить 'IsArray: false' в ГЭТ конфигурации – tymeJV

+0

Это не похоже на работу. Я думал, что isArray по умолчанию false, если не указано. –

ответ

6

Я понял проблему. Мне нужно было добавить transformResponse для обработки возвращаемого массива в ресурсе.

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

Этот ответ был, что мне нужно: https://stackoverflow.com/a/24290186/5838629

Смежные вопросы