2015-09-21 6 views
2

Мне нужно скачать файл с помощью AngularJS. У меня есть приложения Ruby on Rails.Загрузить PDF с помощью AngularJS

Когда пользователь нажимает на ссылку PDF, я посылаю запрос на сервер, где он делает другой запрос JasperReports Server, возвращая PDF.

Все работает, за исключением того, что я не могу прочитать файл, его возвращение только [object Object].

Сервер возвращения этого:

enter image description here

и это то, что я делаю, чтобы прочитать этот файл:

$http.get('/my/api/path/' + object.id + '/pdf').then(function (data) { 

     var hiddenElement = document.createElement('a'); 
     hiddenElement.href = 'data:attachment/pdf,' + encodeURI(data.data); 
     hiddenElement.target = '_blank'; 
     hiddenElement.download = 'test.pdf'; 
     hiddenElement.click(); 

    }, function() { 

    }); 

Что я пропускаю?

PS .: Без AngularJS безупречный.

ответ

2

Постарайтесь выполнить решение от this post. $http.get неправильно обрабатывает двоичные данные.

3

Я считаю, что при использовании Resource любые возвращенные данные, независимо от того, какой тип определен, каким-то образом преобразуются в объект. Запишите data, и я думаю, что вы найдете объект, где каждый ключ является int (0 .. n), и каждое значение является единственным символом. Поэтому, если ответ вернется Hello World, ваш ответ будет выглядеть как {0: 'H', 1: 'e', 2: 'l', 3: 'l', 4: ' ', 5: 'W', 6: 'o', 7: 'r', 8: 'l', 9: 'd'}.

Попробуйте вместо этого использовать $http. Это не будет обрабатывать ответ в какой-либо специальной усадьбе.

+0

Уже пробовал и не работал. Продолжайте возвращать '[object Object]'. –

+0

Какая часть возвращает '[object Object]'? Ответ в $ http? –

+0

Я исправил проблему '[Object object]', но теперь мои страницы пустые. Количество страниц в pdf правильное, но оно ничего не напечатано. Будет обновлен мой вопрос с моими изменениями. –

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